X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0e077171d332434bf727a018691165a6b0621b68..1dee1aad0573bf3a54d536c8dd3693a352cf0cbe:/lib/controller/localdb/login.go?ds=sidebyside diff --git a/lib/controller/localdb/login.go b/lib/controller/localdb/login.go index b41ca64905..8b83c38571 100644 --- a/lib/controller/localdb/login.go +++ b/lib/controller/localdb/login.go @@ -107,6 +107,7 @@ func (ctrl *googleLoginController) Login(ctx context.Context, cluster *arvados.C return ctrl.loginError(fmt.Errorf("error verifying ID token: %s", err)) } var claims struct { + Name string `json:"name"` Email string `json:"email"` Verified bool `json:"email_verified"` } @@ -116,11 +117,20 @@ func (ctrl *googleLoginController) Login(ctx context.Context, cluster *arvados.C if !claims.Verified { return ctrl.loginError(errors.New("cannot authenticate using an unverified email address")) } + + firstname, lastname := strings.TrimSpace(claims.Name), "" + if names := strings.Fields(firstname); len(names) > 1 { + firstname = strings.Join(names[0:len(names)-1], " ") + lastname = names[len(names)-1] + } + ctxRoot := auth.NewContext(ctx, &auth.Credentials{Tokens: []string{cluster.SystemRootToken}}) return railsproxy.UserSessionCreate(ctxRoot, rpc.UserSessionCreateOptions{ ReturnTo: state.Remote + "," + state.ReturnTo, AuthInfo: map[string]interface{}{ - "email": claims.Email, + "email": claims.Email, + "first_name": firstname, + "last_name": lastname, }, }) }