Search in sources :

Example 1 with CredentialEntity

use of org.keycloak.models.jpa.entities.CredentialEntity in project keycloak by keycloak.

the class JpaUserProvider method removeStoredCredential.

@Override
public boolean removeStoredCredential(RealmModel realm, UserModel user, String id) {
    CredentialEntity entity = credentialStore.removeCredentialEntity(realm, user, id);
    UserEntity userEntity = userInEntityManagerContext(user.getId());
    if (entity != null && userEntity != null) {
        userEntity.getCredentials().remove(entity);
    }
    return entity != null;
}
Also used : CredentialEntity(org.keycloak.models.jpa.entities.CredentialEntity) UserEntity(org.keycloak.models.jpa.entities.UserEntity)

Example 2 with CredentialEntity

use of org.keycloak.models.jpa.entities.CredentialEntity in project keycloak by keycloak.

the class JpaUserProvider method createCredential.

@Override
public CredentialModel createCredential(RealmModel realm, UserModel user, CredentialModel cred) {
    CredentialEntity entity = credentialStore.createCredentialEntity(realm, user, cred);
    UserEntity userEntity = userInEntityManagerContext(user.getId());
    if (userEntity != null) {
        userEntity.getCredentials().add(entity);
    }
    return toModel(entity);
}
Also used : CredentialEntity(org.keycloak.models.jpa.entities.CredentialEntity) UserEntity(org.keycloak.models.jpa.entities.UserEntity)

Example 3 with CredentialEntity

use of org.keycloak.models.jpa.entities.CredentialEntity in project keycloak by keycloak.

the class JpaUserCredentialStore method moveCredentialTo.

// //Operations to handle the linked list of credentials
@Override
public boolean moveCredentialTo(RealmModel realm, UserModel user, String id, String newPreviousCredentialId) {
    // 1 - Create new list and move everything to it.
    List<CredentialEntity> newList = this.getStoredCredentialEntities(realm, user).collect(Collectors.toList());
    // 2 - Find indexes of our and newPrevious credential
    int ourCredentialIndex = -1;
    int newPreviousCredentialIndex = -1;
    CredentialEntity ourCredential = null;
    int i = 0;
    for (CredentialEntity credential : newList) {
        if (id.equals(credential.getId())) {
            ourCredentialIndex = i;
            ourCredential = credential;
        } else if (newPreviousCredentialId != null && newPreviousCredentialId.equals(credential.getId())) {
            newPreviousCredentialIndex = i;
        }
        i++;
    }
    if (ourCredentialIndex == -1) {
        logger.warnf("Not found credential with id [%s] of user [%s]", id, user.getUsername());
        return false;
    }
    if (newPreviousCredentialId != null && newPreviousCredentialIndex == -1) {
        logger.warnf("Can't move up credential with id [%s] of user [%s]", id, user.getUsername());
        return false;
    }
    // 3 - Compute index where we move our credential
    int toMoveIndex = newPreviousCredentialId == null ? 0 : newPreviousCredentialIndex + 1;
    // 4 - Insert our credential to new position, remove it from the old position
    newList.add(toMoveIndex, ourCredential);
    int indexToRemove = toMoveIndex < ourCredentialIndex ? ourCredentialIndex + 1 : ourCredentialIndex;
    newList.remove(indexToRemove);
    // 5 - newList contains credentials in requested order now. Iterate through whole list and change priorities accordingly.
    int expectedPriority = 0;
    for (CredentialEntity credential : newList) {
        expectedPriority += PRIORITY_DIFFERENCE;
        if (credential.getPriority() != expectedPriority) {
            credential.setPriority(expectedPriority);
            logger.tracef("Priority of credential [%s] of user [%s] changed to [%d]", credential.getId(), user.getUsername(), expectedPriority);
        }
    }
    return true;
}
Also used : CredentialEntity(org.keycloak.models.jpa.entities.CredentialEntity)

Example 4 with CredentialEntity

use of org.keycloak.models.jpa.entities.CredentialEntity in project keycloak by keycloak.

the class JpaUserCredentialStore method updateCredential.

@Override
public void updateCredential(RealmModel realm, UserModel user, CredentialModel cred) {
    CredentialEntity entity = em.find(CredentialEntity.class, cred.getId());
    if (!checkCredentialEntity(entity, user))
        return;
    entity.setCreatedDate(cred.getCreatedDate());
    entity.setUserLabel(cred.getUserLabel());
    entity.setType(cred.getType());
    entity.setSecretData(cred.getSecretData());
    entity.setCredentialData(cred.getCredentialData());
}
Also used : CredentialEntity(org.keycloak.models.jpa.entities.CredentialEntity)

Example 5 with CredentialEntity

use of org.keycloak.models.jpa.entities.CredentialEntity in project keycloak by keycloak.

the class JpaUserCredentialStore method getStoredCredentialEntities.

private Stream<CredentialEntity> getStoredCredentialEntities(RealmModel realm, UserModel user) {
    UserEntity userEntity = em.getReference(UserEntity.class, user.getId());
    TypedQuery<CredentialEntity> query = em.createNamedQuery("credentialByUser", CredentialEntity.class).setParameter("user", userEntity);
    return closing(query.getResultStream());
}
Also used : CredentialEntity(org.keycloak.models.jpa.entities.CredentialEntity) UserEntity(org.keycloak.models.jpa.entities.UserEntity)

Aggregations

CredentialEntity (org.keycloak.models.jpa.entities.CredentialEntity)8 UserEntity (org.keycloak.models.jpa.entities.UserEntity)4 CredentialModel (org.keycloak.credential.CredentialModel)1