|
|
@ -26,22 +26,7 @@ var (
|
|
|
|
usernameMatcher = regexp.MustCompile("^[a-z0-9]([a-z0-9-]{1,30}[a-z0-9])$")
|
|
|
|
usernameMatcher = regexp.MustCompile("^[a-z0-9]([a-z0-9-]{1,30}[a-z0-9])$")
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
type UserService struct {
|
|
|
|
func (s *APIV2Service) GetUser(ctx context.Context, request *apiv2pb.GetUserRequest) (*apiv2pb.GetUserResponse, error) {
|
|
|
|
apiv2pb.UnimplementedUserServiceServer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Store *store.Store
|
|
|
|
|
|
|
|
Secret string
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// NewUserService creates a new UserService.
|
|
|
|
|
|
|
|
func NewUserService(store *store.Store, secret string) *UserService {
|
|
|
|
|
|
|
|
return &UserService{
|
|
|
|
|
|
|
|
Store: store,
|
|
|
|
|
|
|
|
Secret: secret,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (s *UserService) GetUser(ctx context.Context, request *apiv2pb.GetUserRequest) (*apiv2pb.GetUserResponse, error) {
|
|
|
|
|
|
|
|
user, err := s.Store.GetUser(ctx, &store.FindUser{
|
|
|
|
user, err := s.Store.GetUser(ctx, &store.FindUser{
|
|
|
|
Username: &request.Username,
|
|
|
|
Username: &request.Username,
|
|
|
|
})
|
|
|
|
})
|
|
|
@ -59,7 +44,7 @@ func (s *UserService) GetUser(ctx context.Context, request *apiv2pb.GetUserReque
|
|
|
|
return response, nil
|
|
|
|
return response, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (s *UserService) CreateUser(ctx context.Context, request *apiv2pb.CreateUserRequest) (*apiv2pb.CreateUserResponse, error) {
|
|
|
|
func (s *APIV2Service) CreateUser(ctx context.Context, request *apiv2pb.CreateUserRequest) (*apiv2pb.CreateUserResponse, error) {
|
|
|
|
currentUser, err := getCurrentUser(ctx, s.Store)
|
|
|
|
currentUser, err := getCurrentUser(ctx, s.Store)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get user: %v", err)
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get user: %v", err)
|
|
|
@ -93,7 +78,7 @@ func (s *UserService) CreateUser(ctx context.Context, request *apiv2pb.CreateUse
|
|
|
|
return response, nil
|
|
|
|
return response, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (s *UserService) UpdateUser(ctx context.Context, request *apiv2pb.UpdateUserRequest) (*apiv2pb.UpdateUserResponse, error) {
|
|
|
|
func (s *APIV2Service) UpdateUser(ctx context.Context, request *apiv2pb.UpdateUserRequest) (*apiv2pb.UpdateUserResponse, error) {
|
|
|
|
currentUser, err := getCurrentUser(ctx, s.Store)
|
|
|
|
currentUser, err := getCurrentUser(ctx, s.Store)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get user: %v", err)
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get user: %v", err)
|
|
|
@ -151,7 +136,7 @@ func (s *UserService) UpdateUser(ctx context.Context, request *apiv2pb.UpdateUse
|
|
|
|
return response, nil
|
|
|
|
return response, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (s *UserService) ListUserAccessTokens(ctx context.Context, request *apiv2pb.ListUserAccessTokensRequest) (*apiv2pb.ListUserAccessTokensResponse, error) {
|
|
|
|
func (s *APIV2Service) ListUserAccessTokens(ctx context.Context, request *apiv2pb.ListUserAccessTokensRequest) (*apiv2pb.ListUserAccessTokensResponse, error) {
|
|
|
|
user, err := getCurrentUser(ctx, s.Store)
|
|
|
|
user, err := getCurrentUser(ctx, s.Store)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
|
|
|
@ -221,7 +206,7 @@ func (s *UserService) ListUserAccessTokens(ctx context.Context, request *apiv2pb
|
|
|
|
return response, nil
|
|
|
|
return response, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (s *UserService) CreateUserAccessToken(ctx context.Context, request *apiv2pb.CreateUserAccessTokenRequest) (*apiv2pb.CreateUserAccessTokenResponse, error) {
|
|
|
|
func (s *APIV2Service) CreateUserAccessToken(ctx context.Context, request *apiv2pb.CreateUserAccessTokenRequest) (*apiv2pb.CreateUserAccessTokenResponse, error) {
|
|
|
|
user, err := getCurrentUser(ctx, s.Store)
|
|
|
|
user, err := getCurrentUser(ctx, s.Store)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
|
|
|
@ -286,7 +271,7 @@ func (s *UserService) CreateUserAccessToken(ctx context.Context, request *apiv2p
|
|
|
|
return response, nil
|
|
|
|
return response, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (s *UserService) DeleteUserAccessToken(ctx context.Context, request *apiv2pb.DeleteUserAccessTokenRequest) (*apiv2pb.DeleteUserAccessTokenResponse, error) {
|
|
|
|
func (s *APIV2Service) DeleteUserAccessToken(ctx context.Context, request *apiv2pb.DeleteUserAccessTokenRequest) (*apiv2pb.DeleteUserAccessTokenResponse, error) {
|
|
|
|
user, err := getCurrentUser(ctx, s.Store)
|
|
|
|
user, err := getCurrentUser(ctx, s.Store)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
|
|
|
|
return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
|
|
|
@ -318,7 +303,7 @@ func (s *UserService) DeleteUserAccessToken(ctx context.Context, request *apiv2p
|
|
|
|
return &apiv2pb.DeleteUserAccessTokenResponse{}, nil
|
|
|
|
return &apiv2pb.DeleteUserAccessTokenResponse{}, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (s *UserService) UpsertAccessTokenToStore(ctx context.Context, user *store.User, accessToken, description string) error {
|
|
|
|
func (s *APIV2Service) UpsertAccessTokenToStore(ctx context.Context, user *store.User, accessToken, description string) error {
|
|
|
|
userAccessTokens, err := s.Store.GetUserAccessTokens(ctx, user.ID)
|
|
|
|
userAccessTokens, err := s.Store.GetUserAccessTokens(ctx, user.ID)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return errors.Wrap(err, "failed to get user access tokens")
|
|
|
|
return errors.Wrap(err, "failed to get user access tokens")
|
|
|
|