diff --git a/.mailmap b/.mailmap index c12c593fb7..b33dec8f29 100644 --- a/.mailmap +++ b/.mailmap @@ -1,2 +1,3 @@ Aritz Brosa zazola Giuseppe Lo Presti Giuseppe +Michael D'Silva diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 44e805a697..541b4dad4f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -7,6 +7,7 @@ - Hugo Gonzalez Labrador - Ilja Neumann - Jörn Friedrich Dreyer +- Michael D'Silva - Michael D'Silva - Mohitty - Thomas Boerger diff --git a/internal/grpc/services/gateway/authprovider.go b/internal/grpc/services/gateway/authprovider.go index e74a12711b..08b8e70b58 100644 --- a/internal/grpc/services/gateway/authprovider.go +++ b/internal/grpc/services/gateway/authprovider.go @@ -25,6 +25,7 @@ import ( registry "github.com/cs3org/go-cs3apis/cs3/auth/registry/v1beta1" gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1" rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1" + storageprovider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" "github.com/cs3org/reva/pkg/appctx" "github.com/cs3org/reva/pkg/errtypes" "github.com/cs3org/reva/pkg/rgrpc/status" @@ -82,39 +83,6 @@ func (s *svc) Authenticate(ctx context.Context, req *gateway.AuthenticateRequest }, nil } - // TODO(labkode): we don't ned to call the user manager in the auth phase - // as the auth must provide a valid user. The mapping between user credentials and - // unique claims is done at the Authenticate logic an not here. - /* - userClient, err := pool.GetUserProviderServiceClient(s.c.UserProviderEndpoint) - if err != nil { - log.Err(err).Msg("error getting user provider client") - return &gateway.AuthenticateResponse{ - Status: status.NewInternal(ctx, err, "error getting user provider service client"), - }, nil - } - - getUserReq := &user.GetUserRequest{ - UserId: uid, - } - - getUserRes, err := userClient.GetUser(ctx, getUserReq) - if err != nil { - err = errors.Wrap(err, "authsvc: error in GetUser") - res := &gateway.AuthenticateResponse{ - Status: status.NewUnauthenticated(ctx, err, "error getting user information"), - } - return res, nil - } - - if getUserRes.Status.Code != rpc.Code_CODE_OK { - err := status.NewErrorFromCode(getUserRes.Status.Code, "authsvc") - return &gateway.AuthenticateResponse{ - Status: status.NewUnauthenticated(ctx, err, "error getting user information"), - }, nil - } - - */ user := res.User token, err := s.tokenmgr.MintToken(ctx, user) @@ -126,6 +94,33 @@ func (s *svc) Authenticate(ctx context.Context, req *gateway.AuthenticateRequest return res, nil } + if s.c.DisableHomeCreationOnLogin { + gwRes := &gateway.AuthenticateResponse{ + Status: status.NewOK(ctx), + User: res.User, + Token: token, + } + return gwRes, nil + } + + // create home directory + createHomeReq := &storageprovider.CreateHomeRequest{} + createHomeRes, err := s.CreateHome(ctx, createHomeReq) + if err != nil { + log.Err(err).Msg("user id is nil") + return &gateway.AuthenticateResponse{ + Status: status.NewInternal(ctx, err, "error creating user home"), + }, nil + } + + if createHomeRes.Status.Code != rpc.Code_CODE_OK { + err := status.NewErrorFromCode(createHomeRes.Status.Code, "gateway") + log.Err(err).Msg("error calling Createhome") + return &gateway.AuthenticateResponse{ + Status: status.NewInternal(ctx, err, "error creating user home"), + }, nil + } + gwRes := &gateway.AuthenticateResponse{ Status: status.NewOK(ctx), User: res.User, diff --git a/internal/grpc/services/gateway/gateway.go b/internal/grpc/services/gateway/gateway.go index 31b6a2312e..6d223e1200 100644 --- a/internal/grpc/services/gateway/gateway.go +++ b/internal/grpc/services/gateway/gateway.go @@ -47,6 +47,7 @@ type config struct { UserProviderEndpoint string `mapstructure:"userprovidersvc"` CommitShareToStorageGrant bool `mapstructure:"commit_share_to_storage_grant"` CommitShareToStorageRef bool `mapstructure:"commit_share_to_storage_ref"` + DisableHomeCreationOnLogin bool `mapstructure:"disable_home_creation_on_login"` DataGatewayEndpoint string `mapstructure:"datagateway"` TransferSharedSecret string `mapstructure:"transfer_shared_secret"` TranserExpires int64 `mapstructure:"transfer_expires"`