keycloak-service
公開メンバ関数 | 全メンバ一覧
org.keycloak.authentication.requiredactions.UpdateProfile クラス
org.keycloak.authentication.requiredactions.UpdateProfile の継承関係図
Inheritance graph
org.keycloak.authentication.requiredactions.UpdateProfile 連携図
Collaboration graph

公開メンバ関数

void evaluateTriggers (RequiredActionContext context)
 
void requiredActionChallenge (RequiredActionContext context)
 
void processAction (RequiredActionContext context)
 
void close ()
 
RequiredActionProvider create (KeycloakSession session)
 
RequiredActionProvider createDisplay (KeycloakSession session, String displayType)
 
void init (Config.Scope config)
 
void postInit (KeycloakSessionFactory factory)
 
String getDisplayText ()
 
String getId ()
 

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ close()

void org.keycloak.authentication.requiredactions.UpdateProfile.close ( )
inline
135  {
136 
137  }

◆ create()

RequiredActionProvider org.keycloak.authentication.requiredactions.UpdateProfile.create ( KeycloakSession  session)
inline
140  {
141  return this;
142  }

◆ createDisplay()

RequiredActionProvider org.keycloak.authentication.requiredactions.UpdateProfile.createDisplay ( KeycloakSession  session,
String  displayType 
)
inline
146  {
147  if (displayType == null) return this;
148  if (!OAuth2Constants.DISPLAY_CONSOLE.equalsIgnoreCase(displayType)) return null;
149  return ConsoleUpdateProfile.SINGLETON;
150  }

◆ evaluateTriggers()

void org.keycloak.authentication.requiredactions.UpdateProfile.evaluateTriggers ( RequiredActionContext  context)
inline
45  {
46  }

◆ getDisplayText()

String org.keycloak.authentication.requiredactions.UpdateProfile.getDisplayText ( )
inline
165  {
166  return "Update Profile";
167  }

◆ getId()

String org.keycloak.authentication.requiredactions.UpdateProfile.getId ( )
inline
171  {
172  return UserModel.RequiredAction.UPDATE_PROFILE.name();
173  }

◆ init()

void org.keycloak.authentication.requiredactions.UpdateProfile.init ( Config.Scope  config)
inline
155  {
156 
157  }

◆ postInit()

void org.keycloak.authentication.requiredactions.UpdateProfile.postInit ( KeycloakSessionFactory  factory)
inline
160  {
161 
162  }

◆ processAction()

void org.keycloak.authentication.requiredactions.UpdateProfile.processAction ( RequiredActionContext  context)
inline
56  {
57  EventBuilder event = context.getEvent();
58  event.event(EventType.UPDATE_PROFILE);
59  MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();
60  UserModel user = context.getUser();
61  KeycloakSession session = context.getSession();
62  RealmModel realm = context.getRealm();
63 
64 
65  List<FormMessage> errors = Validation.validateUpdateProfileForm(realm, formData);
66  if (errors != null && !errors.isEmpty()) {
67  Response challenge = context.form()
68  .setErrors(errors)
69  .setFormData(formData)
70  .createResponse(UserModel.RequiredAction.UPDATE_PROFILE);
71  context.challenge(challenge);
72  return;
73  }
74 
75  if (realm.isEditUsernameAllowed()) {
76  String username = formData.getFirst("username");
77  String oldUsername = user.getUsername();
78 
79  boolean usernameChanged = oldUsername != null ? !oldUsername.equals(username) : username != null;
80 
81  if (usernameChanged) {
82 
83  if (session.users().getUserByUsername(username, realm) != null) {
84  Response challenge = context.form()
85  .setError(Messages.USERNAME_EXISTS)
86  .setFormData(formData)
87  .createResponse(UserModel.RequiredAction.UPDATE_PROFILE);
88  context.challenge(challenge);
89  return;
90  }
91 
92  user.setUsername(username);
93  }
94 
95  }
96 
97  user.setFirstName(formData.getFirst("firstName"));
98  user.setLastName(formData.getFirst("lastName"));
99 
100  String email = formData.getFirst("email");
101 
102  String oldEmail = user.getEmail();
103  boolean emailChanged = oldEmail != null ? !oldEmail.equals(email) : email != null;
104 
105  if (emailChanged) {
106  if (!realm.isDuplicateEmailsAllowed()) {
107  UserModel userByEmail = session.users().getUserByEmail(email, realm);
108 
109  // check for duplicated email
110  if (userByEmail != null && !userByEmail.getId().equals(user.getId())) {
111  Response challenge = context.form()
112  .setError(Messages.EMAIL_EXISTS)
113  .setFormData(formData)
114  .createResponse(UserModel.RequiredAction.UPDATE_PROFILE);
115  context.challenge(challenge);
116  return;
117  }
118  }
119 
120  user.setEmail(email);
121  user.setEmailVerified(false);
122  }
123 
124  AttributeFormDataProcessor.process(formData, realm, user);
125 
126  if (emailChanged) {
127  event.clone().event(EventType.UPDATE_EMAIL).detail(Details.PREVIOUS_EMAIL, oldEmail).detail(Details.UPDATED_EMAIL, email).success();
128  }
129  context.success();
130 
131  }
static final String EMAIL_EXISTS
Definition: Messages.java:67
static final String USERNAME_EXISTS
Definition: Messages.java:63
Definition: Messages.java:22

◆ requiredActionChallenge()

void org.keycloak.authentication.requiredactions.UpdateProfile.requiredActionChallenge ( RequiredActionContext  context)
inline
49  {
50  Response challenge = context.form()
51  .createResponse(UserModel.RequiredAction.UPDATE_PROFILE);
52  context.challenge(challenge);
53  }

このクラス詳解は次のファイルから抽出されました: