Example #1
0
  @Test
  public void testGetById() {
    Assert.assertEquals(realm1, model.getRealm("id1"));
    Assert.assertEquals(realm1, model.getRealmByName("realm1"));
    Assert.assertEquals(realm2, model.getRealm("id2"));
    Assert.assertEquals(realm2, model.getRealmByName("realm2"));

    ClientModel r1app1 = realm1.getClientByClientId("app1");
    ClientModel r1app2 = realm1.getClientByClientId("app2");
    ClientModel r2app1 = realm2.getClientByClientId("app1");
    ClientModel r2app2 = realm2.getClientByClientId("app2");

    Assert.assertEquals(r1app1, realm1.getClientById(r1app1.getId()));
    Assert.assertNull(realm2.getClientById(r1app1.getId()));

    ClientModel r2cl1 = realm2.getClientByClientId("cl1");
    Assert.assertEquals(r2cl1.getId(), realm2.getClientById(r2cl1.getId()).getId());
    Assert.assertNull(realm1.getClientByClientId(r2cl1.getId()));

    RoleModel r1App1Role = r1app1.getRole("app1Role1");
    Assert.assertEquals(r1App1Role, realm1.getRoleById(r1App1Role.getId()));
    Assert.assertNull(realm2.getRoleById(r1App1Role.getId()));

    RoleModel r2Role1 = realm2.getRole("role2");
    Assert.assertNull(realm1.getRoleById(r2Role1.getId()));
    Assert.assertEquals(r2Role1, realm2.getRoleById(r2Role1.getId()));
  }
Example #2
0
  public static void attachClientSession(
      UserSessionModel session, ClientSessionModel clientSession) {
    if (clientSession.getUserSession() != null) {
      return;
    }

    UserModel user = session.getUser();
    clientSession.setUserSession(session);
    Set<String> requestedRoles = new HashSet<String>();
    // todo scope param protocol independent
    for (RoleModel r : TokenManager.getAccess(null, clientSession.getClient(), user)) {
      requestedRoles.add(r.getId());
    }
    clientSession.setRoles(requestedRoles);

    Set<String> requestedProtocolMappers = new HashSet<String>();
    for (ProtocolMapperModel protocolMapper : clientSession.getClient().getProtocolMappers()) {
      if (protocolMapper.getProtocol().equals(clientSession.getAuthMethod())) {
        requestedProtocolMappers.add(protocolMapper.getId());
      }
    }
    clientSession.setProtocolMappers(requestedProtocolMappers);

    Map<String, String> transferredNotes = clientSession.getUserSessionNotes();
    for (Map.Entry<String, String> entry : transferredNotes.entrySet()) {
      session.setNote(entry.getKey(), entry.getValue());
    }
  }
Example #3
0
 protected TypedQuery<UserRoleMappingEntity> getUserRoleMappingEntityTypedQuery(RoleModel role) {
   TypedQuery<UserRoleMappingEntity> query =
       em.createNamedQuery("userHasRole", UserRoleMappingEntity.class);
   query.setParameter("user", getUser());
   query.setParameter("roleId", role.getId());
   return query;
 }
Example #4
0
 @Override
 public RoleModel addRole(String id, String name) {
   getDelegateForUpdate();
   RoleModel role = updated.addRole(id, name);
   cacheSession.registerRoleInvalidation(role.getId());
   return role;
 }
Example #5
0
 @Override
 public void grantRole(RoleModel role) {
   if (hasRole(role)) return;
   UserRoleMappingEntity entity = new UserRoleMappingEntity();
   entity.setUser(getUser());
   entity.setRoleId(role.getId());
   em.persist(entity);
   em.flush();
   em.detach(entity);
 }
Example #6
0
  // Update roles and protocolMappers to given consentEntity from the consentModel
  private void updateGrantedConsentEntity(
      UserConsentEntity consentEntity, UserConsentModel consentModel) {
    Collection<UserConsentProtocolMapperEntity> grantedProtocolMapperEntities =
        consentEntity.getGrantedProtocolMappers();
    Collection<UserConsentProtocolMapperEntity> mappersToRemove =
        new HashSet<UserConsentProtocolMapperEntity>(grantedProtocolMapperEntities);

    for (ProtocolMapperModel protocolMapper : consentModel.getGrantedProtocolMappers()) {
      UserConsentProtocolMapperEntity grantedProtocolMapperEntity =
          new UserConsentProtocolMapperEntity();
      grantedProtocolMapperEntity.setUserConsent(consentEntity);
      grantedProtocolMapperEntity.setProtocolMapperId(protocolMapper.getId());

      // Check if it's already there
      if (!grantedProtocolMapperEntities.contains(grantedProtocolMapperEntity)) {
        em.persist(grantedProtocolMapperEntity);
        em.flush();
        grantedProtocolMapperEntities.add(grantedProtocolMapperEntity);
      } else {
        mappersToRemove.remove(grantedProtocolMapperEntity);
      }
    }
    // Those mappers were no longer on consentModel and will be removed
    for (UserConsentProtocolMapperEntity toRemove : mappersToRemove) {
      grantedProtocolMapperEntities.remove(toRemove);
      em.remove(toRemove);
    }

    Collection<UserConsentRoleEntity> grantedRoleEntities = consentEntity.getGrantedRoles();
    Set<UserConsentRoleEntity> rolesToRemove =
        new HashSet<UserConsentRoleEntity>(grantedRoleEntities);
    for (RoleModel role : consentModel.getGrantedRoles()) {
      UserConsentRoleEntity consentRoleEntity = new UserConsentRoleEntity();
      consentRoleEntity.setUserConsent(consentEntity);
      consentRoleEntity.setRoleId(role.getId());

      // Check if it's already there
      if (!grantedRoleEntities.contains(consentRoleEntity)) {
        em.persist(consentRoleEntity);
        em.flush();
        grantedRoleEntities.add(consentRoleEntity);
      } else {
        rolesToRemove.remove(consentRoleEntity);
      }
    }
    // Those roles were no longer on consentModel and will be removed
    for (UserConsentRoleEntity toRemove : rolesToRemove) {
      grantedRoleEntities.remove(toRemove);
      em.remove(toRemove);
    }

    em.flush();
  }
Example #7
0
  @Override
  public boolean hasScope(RoleModel role) {
    if (updated != null) return updated.hasScope(role);
    if (cached.isFullScopeAllowed() || cached.getScope().contains(role.getId())) return true;

    Set<RoleModel> roles = getScopeMappings();

    for (RoleModel mapping : roles) {
      if (mapping.hasRole(role)) return true;
    }

    roles = getRoles();
    if (roles.contains(role)) return true;

    for (RoleModel mapping : roles) {
      if (mapping.hasRole(role)) return true;
    }
    return false;
  }
Example #8
0
 @Override
 public boolean removeRole(RoleModel role) {
   cacheSession.registerRoleInvalidation(role.getId());
   getDelegateForUpdate();
   return updated.removeRole(role);
 }