keycloak-service
公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.authentication.requiredactions.ConsoleVerifyEmail クラス
org.keycloak.authentication.requiredactions.ConsoleVerifyEmail の継承関係図
Inheritance graph
org.keycloak.authentication.requiredactions.ConsoleVerifyEmail 連携図
Collaboration graph

公開メンバ関数

void evaluateTriggers (RequiredActionContext context)
 
void requiredActionChallenge (RequiredActionContext context)
 
void processAction (RequiredActionContext context)
 
void close ()
 

静的公開変数類

static final ConsoleVerifyEmail SINGLETON = new ConsoleVerifyEmail()
 
static String EMAIL_CODE ="email_code"
 

限定公開メンバ関数

ConsoleDisplayMode challenge (RequiredActionContext context)
 

非公開メンバ関数

Response sendVerifyEmail (RequiredActionContext context) throws UriBuilderException, IllegalArgumentException
 

静的非公開変数類

static final Logger logger = Logger.getLogger(ConsoleVerifyEmail.class)
 

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ challenge()

ConsoleDisplayMode org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.challenge ( RequiredActionContext  context)
inlineprotected
106  {
107  return ConsoleDisplayMode.challenge(context)
108  .header()
109  .param(EMAIL_CODE)
110  .label("console-email-code")
111  .challenge();
112  }
static String EMAIL_CODE
Definition: ConsoleVerifyEmail.java:105

◆ close()

void org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.close ( )
inline
101  {
102 
103  }

◆ evaluateTriggers()

void org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.evaluateTriggers ( RequiredActionContext  context)
inline
48  {
49  if (context.getRealm().isVerifyEmail() && !context.getUser().isEmailVerified()) {
50  context.getUser().addRequiredAction(UserModel.RequiredAction.VERIFY_EMAIL);
51  logger.debug("User is required to verify email");
52  }
53  }
static final Logger logger
Definition: ConsoleVerifyEmail.java:46

◆ processAction()

void org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.processAction ( RequiredActionContext  context)
inline
77  {
78  EventBuilder event = context.getEvent().clone().event(EventType.VERIFY_EMAIL).detail(Details.EMAIL, context.getUser().getEmail());
79  String code = context.getAuthenticationSession().getAuthNote(Constants.VERIFY_EMAIL_CODE);
80  if (code == null) {
81  requiredActionChallenge(context);
82  return;
83  }
84 
85  MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();
86  String emailCode = formData.getFirst(EMAIL_CODE);
87 
88  if (!code.equals(emailCode)) {
89  context.challenge(
90  challenge(context).message(Messages.INVALID_CODE)
91  );
92  event.error(Errors.INVALID_CODE);
93  return;
94  }
95  event.success();
96  context.success();
97  }
void requiredActionChallenge(RequiredActionContext context)
Definition: ConsoleVerifyEmail.java:56
ConsoleDisplayMode challenge(RequiredActionContext context)
Definition: ConsoleVerifyEmail.java:106
static String EMAIL_CODE
Definition: ConsoleVerifyEmail.java:105

◆ requiredActionChallenge()

void org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.requiredActionChallenge ( RequiredActionContext  context)
inline
56  {
57  AuthenticationSessionModel authSession = context.getAuthenticationSession();
58 
59  if (context.getUser().isEmailVerified()) {
60  context.success();
61  authSession.removeAuthNote(Constants.VERIFY_EMAIL_KEY);
62  return;
63  }
64 
65  String email = context.getUser().getEmail();
66  if (Validation.isBlank(email)) {
67  context.ignore();
68  return;
69  }
70 
71  Response challenge = sendVerifyEmail(context);
72  context.challenge(challenge);
73  }
Response sendVerifyEmail(RequiredActionContext context)
Definition: ConsoleVerifyEmail.java:114
ConsoleDisplayMode challenge(RequiredActionContext context)
Definition: ConsoleVerifyEmail.java:106

◆ sendVerifyEmail()

Response org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.sendVerifyEmail ( RequiredActionContext  context) throws UriBuilderException, IllegalArgumentException
inlineprivate
114  {
115  KeycloakSession session = context.getSession();
116  UserModel user = context.getUser();
117  AuthenticationSessionModel authSession = context.getAuthenticationSession();
118  EventBuilder event = context.getEvent().clone().event(EventType.SEND_VERIFY_EMAIL).detail(Details.EMAIL, user.getEmail());
119  String code = RandomString.randomCode(8);
120  authSession.setAuthNote(Constants.VERIFY_EMAIL_CODE, code);
121  RealmModel realm = session.getContext().getRealm();
122 
123  Map<String, Object> attributes = new HashMap<>();
124  attributes.put("code", code);
125 
126  try {
127  session
128  .getProvider(EmailTemplateProvider.class)
129  .setAuthenticationSession(authSession)
130  .setRealm(realm)
131  .setUser(user)
132  .send("emailVerificationSubject", "email-verification-with-code.ftl", attributes);
133  event.success();
134  } catch (EmailException e) {
135  logger.error("Failed to send verification email", e);
136  event.error(Errors.EMAIL_SEND_FAILED);
137  }
138 
139  return challenge(context).text(context.form().getMessage("console-verify-email", user.getEmail()));
140  }
static final Logger logger
Definition: ConsoleVerifyEmail.java:46
ConsoleDisplayMode challenge(RequiredActionContext context)
Definition: ConsoleVerifyEmail.java:106

メンバ詳解

◆ EMAIL_CODE

String org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.EMAIL_CODE ="email_code"
static

◆ logger

final Logger org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.logger = Logger.getLogger(ConsoleVerifyEmail.class)
staticprivate

◆ SINGLETON

final ConsoleVerifyEmail org.keycloak.authentication.requiredactions.ConsoleVerifyEmail.SINGLETON = new ConsoleVerifyEmail()
static

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