// MakeUserGetEndpoint returns an endpoint via the given service. func MakeUserGetEndpoint(s Service) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (response interface{}, err error) { req := request.(GetRequest) usrs, err := s.GetUsers(req.ID) if req.ID == "" { return EmbedStruct{usersResponse{Users: usrs}}, err } if len(usrs) == 0 { if req.Attr == "addresses" { return EmbedStruct{addressesResponse{Addresses: make([]users.Address, 0)}}, err } if req.Attr == "cards" { return EmbedStruct{cardsResponse{Cards: make([]users.Card, 0)}}, err } return users.User{}, err } user := usrs[0] db.GetUserAttributes(&user) if req.Attr == "addresses" { return EmbedStruct{addressesResponse{Addresses: user.Addresses}}, err } if req.Attr == "cards" { return EmbedStruct{cardsResponse{Cards: user.Cards}}, err } return user, err } }
func (s *fixedService) Login(username, password string) (users.User, error) { u, err := db.GetUserByName(username) if err != nil { return users.New(), err } if u.Password != calculatePassHash(password, u.Salt) { return users.New(), ErrUnauthorized } db.GetUserAttributes(&u) u.MaskCCs() return u, nil }