Search in sources :

Example 1 with PasswordCredentialProvider

use of org.keycloak.credential.PasswordCredentialProvider in project keycloak by keycloak.

the class UpdatePassword method evaluateTriggers.

@Override
public void evaluateTriggers(RequiredActionContext context) {
    int daysToExpirePassword = context.getRealm().getPasswordPolicy().getDaysToExpirePassword();
    if (daysToExpirePassword != -1) {
        PasswordCredentialProvider passwordProvider = (PasswordCredentialProvider) context.getSession().getProvider(CredentialProvider.class, PasswordCredentialProviderFactory.PROVIDER_ID);
        CredentialModel password = passwordProvider.getPassword(context.getRealm(), context.getUser());
        if (password != null) {
            if (password.getCreatedDate() == null) {
                context.getUser().addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
                logger.debug("User is required to update password");
            } else {
                long timeElapsed = Time.toMillis(Time.currentTime()) - password.getCreatedDate();
                long timeToExpire = TimeUnit.DAYS.toMillis(daysToExpirePassword);
                if (timeElapsed > timeToExpire) {
                    context.getUser().addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
                    logger.debug("User is required to update password");
                }
            }
        }
    }
}
Also used : UserCredentialModel(org.keycloak.models.UserCredentialModel) CredentialModel(org.keycloak.credential.CredentialModel) CredentialProvider(org.keycloak.credential.CredentialProvider) PasswordCredentialProvider(org.keycloak.credential.PasswordCredentialProvider) PasswordCredentialProvider(org.keycloak.credential.PasswordCredentialProvider)

Aggregations

CredentialModel (org.keycloak.credential.CredentialModel)1 CredentialProvider (org.keycloak.credential.CredentialProvider)1 PasswordCredentialProvider (org.keycloak.credential.PasswordCredentialProvider)1 UserCredentialModel (org.keycloak.models.UserCredentialModel)1