mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-07 07:16:54 +00:00
fix: add authenticators to user v3 endpoints
This commit is contained in:
@@ -24,14 +24,38 @@ func (s *Server) SetPassword(ctx context.Context, req *user.SetPasswordRequest)
|
||||
}
|
||||
|
||||
func setPasswordRequestToSetSchemaUserPassword(req *user.SetPasswordRequest) *command.SetSchemaUserPassword {
|
||||
pw, verification := setPasswordToSetSchemaUserPassword(req.GetNewPassword())
|
||||
return &command.SetSchemaUserPassword{
|
||||
ResourceOwner: organizationToUpdateResourceOwner(req.Organization),
|
||||
UserID: req.GetId(),
|
||||
Password: req.GetNewPassword().GetPassword(),
|
||||
EncodedPasswordHash: req.GetNewPassword().GetHash(),
|
||||
ChangeRequired: req.GetNewPassword().GetChangeRequired(),
|
||||
VerificationCode: req.GetNewPassword().GetVerificationCode(),
|
||||
CurrentPassword: req.GetNewPassword().GetCurrentPassword(),
|
||||
ResourceOwner: organizationToUpdateResourceOwner(req.Organization),
|
||||
UserID: req.GetId(),
|
||||
Password: pw,
|
||||
Verification: verification,
|
||||
}
|
||||
}
|
||||
|
||||
func setPasswordToSetSchemaUserPassword(req *user.SetPassword) (*command.SchemaUserPassword, *command.SchemaUserPasswordVerification) {
|
||||
return setPasswordToSchemaUserPassword(req.GetPassword(), req.GetHash(), req.GetChangeRequired()),
|
||||
setPasswordToSchemaUserPasswordVerification(req.GetCurrentPassword(), req.GetVerificationCode())
|
||||
}
|
||||
|
||||
func setPasswordToSchemaUserPassword(pw string, hash string, changeRequired bool) *command.SchemaUserPassword {
|
||||
if pw == "" && hash == "" {
|
||||
return nil
|
||||
}
|
||||
return &command.SchemaUserPassword{
|
||||
Password: pw,
|
||||
EncodedPasswordHash: hash,
|
||||
ChangeRequired: changeRequired,
|
||||
}
|
||||
}
|
||||
|
||||
func setPasswordToSchemaUserPasswordVerification(pw string, code string) *command.SchemaUserPasswordVerification {
|
||||
if pw == "" && code == "" {
|
||||
return nil
|
||||
}
|
||||
return &command.SchemaUserPasswordVerification{
|
||||
CurrentPassword: pw,
|
||||
Code: code,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,21 +25,32 @@ func (s *Server) AddPersonalAccessToken(ctx context.Context, req *user.AddPerson
|
||||
return &user.AddPersonalAccessTokenResponse{
|
||||
Details: resource_object.DomainToDetailsPb(details, object.OwnerType_OWNER_TYPE_ORG, details.ResourceOwner),
|
||||
PersonalAccessTokenId: details.ID,
|
||||
PersonalAccessToken: pat.Token,
|
||||
PersonalAccessToken: pat.PAT.Token,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func addPersonalAccessTokenRequestToAddPAT(req *user.AddPersonalAccessTokenRequest) *command.AddPAT {
|
||||
expDate := time.Time{}
|
||||
if req.GetPersonalAccessToken().GetExpirationDate() != nil {
|
||||
expDate = req.GetPersonalAccessToken().GetExpirationDate().AsTime()
|
||||
if req == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &command.AddPAT{
|
||||
ResourceOwner: organizationToUpdateResourceOwner(req.Organization),
|
||||
UserID: req.GetId(),
|
||||
ResourceOwner: organizationToUpdateResourceOwner(req.Organization),
|
||||
UserID: req.GetId(),
|
||||
PAT: setPersonalAccessTokenToAddPAT(req.GetPersonalAccessToken()),
|
||||
}
|
||||
}
|
||||
|
||||
func setPersonalAccessTokenToAddPAT(set *user.SetPersonalAccessToken) *command.PAT {
|
||||
if set == nil {
|
||||
return nil
|
||||
}
|
||||
expDate := time.Time{}
|
||||
if set.GetExpirationDate() != nil {
|
||||
expDate = set.GetExpirationDate().AsTime()
|
||||
}
|
||||
return &command.PAT{
|
||||
ExpirationDate: expDate,
|
||||
Scope: []string{oidc.ScopeOpenID, oidc.ScopeProfile, z_oidc.ScopeUserMetaData, z_oidc.ScopeResourceOwner},
|
||||
Scopes: []string{oidc.ScopeOpenID, oidc.ScopeProfile, z_oidc.ScopeUserMetaData, z_oidc.ScopeResourceOwner},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,19 +22,31 @@ func (s *Server) AddPublicKey(ctx context.Context, req *user.AddPublicKeyRequest
|
||||
return &user.AddPublicKeyResponse{
|
||||
Details: resource_object.DomainToDetailsPb(details, object.OwnerType_OWNER_TYPE_ORG, details.ResourceOwner),
|
||||
PublicKeyId: details.ID,
|
||||
PrivateKey: pk.PrivateKey,
|
||||
PrivateKey: pk.GetPrivateKey(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func addPublicKeyRequestToAddPublicKey(req *user.AddPublicKeyRequest) *command.AddPublicKey {
|
||||
expDate := time.Time{}
|
||||
if req.GetPublicKey().GetExpirationDate() != nil {
|
||||
expDate = req.GetPublicKey().GetExpirationDate().AsTime()
|
||||
if req == nil {
|
||||
return nil
|
||||
}
|
||||
return &command.AddPublicKey{
|
||||
ResourceOwner: organizationToUpdateResourceOwner(req.Organization),
|
||||
UserID: req.GetId(),
|
||||
PublicKey: req.GetPublicKey().GetPublicKey().GetPublicKey(),
|
||||
ResourceOwner: organizationToUpdateResourceOwner(req.Organization),
|
||||
UserID: req.GetId(),
|
||||
PublicKey: setPublicKeyToAddPublicKey(req.GetPublicKey()),
|
||||
}
|
||||
}
|
||||
|
||||
func setPublicKeyToAddPublicKey(req *user.SetPublicKey) *command.PublicKey {
|
||||
if req == nil {
|
||||
return nil
|
||||
}
|
||||
expDate := time.Time{}
|
||||
if req.GetExpirationDate() != nil {
|
||||
expDate = req.GetExpirationDate().AsTime()
|
||||
}
|
||||
return &command.PublicKey{
|
||||
PublicKey: req.GetPublicKey().GetPublicKey(),
|
||||
ExpirationDate: expDate,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,20 +30,54 @@ func (s *Server) CreateUser(ctx context.Context, req *user.CreateUserRequest) (_
|
||||
}, nil
|
||||
}
|
||||
|
||||
type authenticators struct {
|
||||
Usernames []*command.Username
|
||||
Password *command.SchemaUserPassword
|
||||
PublicKeys []*command.PublicKey
|
||||
PATs []*command.PAT
|
||||
}
|
||||
|
||||
func setAuthenticatorsToAuthenticators(set *user.SetAuthenticators) *authenticators {
|
||||
if set == nil {
|
||||
return nil
|
||||
}
|
||||
auths := &authenticators{}
|
||||
for _, u := range set.GetUsernames() {
|
||||
auths.Usernames = append(auths.Usernames, setUsernameToAddUsername(u))
|
||||
}
|
||||
if set.GetPassword() != nil {
|
||||
auths.Password = setPasswordToSchemaUserPassword(set.GetPassword().GetPassword(), set.GetPassword().GetHash(), set.GetPassword().GetChangeRequired())
|
||||
}
|
||||
for _, p := range set.GetPublicKey() {
|
||||
auths.PublicKeys = append(auths.PublicKeys, setPublicKeyToAddPublicKey(p))
|
||||
}
|
||||
for _, p := range set.GetPersonalAccessToken() {
|
||||
auths.PATs = append(auths.PATs, setPersonalAccessTokenToAddPAT(p))
|
||||
}
|
||||
return auths
|
||||
}
|
||||
|
||||
func createUserRequestToCreateSchemaUser(ctx context.Context, req *user.CreateUserRequest) (*command.CreateSchemaUser, error) {
|
||||
data, err := req.GetUser().GetData().MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &command.CreateSchemaUser{
|
||||
user := &command.CreateSchemaUser{
|
||||
ResourceOwner: organizationToCreateResourceOwner(ctx, req.Organization),
|
||||
SchemaID: req.GetUser().GetSchemaId(),
|
||||
ID: req.GetUser().GetUserId(),
|
||||
Data: data,
|
||||
Email: setEmailToEmail(req.GetUser().GetContact().GetEmail()),
|
||||
Phone: setPhoneToPhone(req.GetUser().GetContact().GetPhone()),
|
||||
}, nil
|
||||
}
|
||||
if auths := setAuthenticatorsToAuthenticators(req.GetUser().Authenticators); auths != nil {
|
||||
user.Usernames = auths.Usernames
|
||||
user.Password = auths.Password
|
||||
user.PublicKeys = auths.PublicKeys
|
||||
user.PATs = auths.PATs
|
||||
}
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func organizationToCreateResourceOwner(ctx context.Context, org *object.Organization) string {
|
||||
|
||||
@@ -24,11 +24,23 @@ func (s *Server) AddUsername(ctx context.Context, req *user.AddUsernameRequest)
|
||||
}
|
||||
|
||||
func addUsernameRequestToAddUsername(req *user.AddUsernameRequest) *command.AddUsername {
|
||||
if req == nil {
|
||||
return nil
|
||||
}
|
||||
return &command.AddUsername{
|
||||
ResourceOwner: organizationToUpdateResourceOwner(req.Organization),
|
||||
UserID: req.GetId(),
|
||||
Username: req.GetUsername().GetUsername(),
|
||||
IsOrgSpecific: req.GetUsername().GetIsOrganizationSpecific(),
|
||||
Username: setUsernameToAddUsername(req.GetUsername()),
|
||||
}
|
||||
}
|
||||
|
||||
func setUsernameToAddUsername(req *user.SetUsername) *command.Username {
|
||||
if req == nil {
|
||||
return nil
|
||||
}
|
||||
return &command.Username{
|
||||
Username: req.GetUsername(),
|
||||
IsOrgSpecific: req.GetIsOrganizationSpecific(),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user