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

公開メンバ関数

 JpaRealmProvider (KeycloakSession session, EntityManager em)
 
MigrationModel getMigrationModel ()
 
RealmModel createRealm (String name)
 
RealmModel createRealm (String id, String name)
 
RealmModel getRealm (String id)
 
List< RealmModelgetRealms ()
 
RealmModel getRealmByName (String name)
 
boolean removeRealm (String id)
 
void close ()
 
RoleModel addRealmRole (RealmModel realm, String name)
 
RoleModel addRealmRole (RealmModel realm, String id, String name)
 
RoleModel getRealmRole (RealmModel realm, String name)
 
RoleModel addClientRole (RealmModel realm, ClientModel client, String name)
 
RoleModel addClientRole (RealmModel realm, ClientModel client, String id, String name)
 
Set< RoleModelgetRealmRoles (RealmModel realm)
 
RoleModel getClientRole (RealmModel realm, ClientModel client, String name)
 
Set< RoleModelgetClientRoles (RealmModel realm, ClientModel client)
 
boolean removeRole (RealmModel realm, RoleModel role)
 
RoleModel getRoleById (String id, RealmModel realm)
 
GroupModel getGroupById (String id, RealmModel realm)
 
void moveGroup (RealmModel realm, GroupModel group, GroupModel toParent)
 
List< GroupModelgetGroups (RealmModel realm)
 
Long getGroupsCount (RealmModel realm, Boolean onlyTopGroups)
 
Long getGroupsCountByNameContaining (RealmModel realm, String search)
 
List< GroupModelgetTopLevelGroups (RealmModel realm)
 
List< GroupModelgetTopLevelGroups (RealmModel realm, Integer first, Integer max)
 
boolean removeGroup (RealmModel realm, GroupModel group)
 
GroupModel createGroup (RealmModel realm, String name)
 
GroupModel createGroup (RealmModel realm, String id, String name)
 
void addTopLevelGroup (RealmModel realm, GroupModel subGroup)
 
ClientModel addClient (RealmModel realm, String clientId)
 
ClientModel addClient (RealmModel realm, String id, String clientId)
 
List< ClientModelgetClients (RealmModel realm)
 
ClientModel getClientById (String id, RealmModel realm)
 
ClientModel getClientByClientId (String clientId, RealmModel realm)
 
boolean removeClient (String id, RealmModel realm)
 
ClientScopeModel getClientScopeById (String id, RealmModel realm)
 
List< GroupModelsearchForGroupByName (RealmModel realm, String search, Integer first, Integer max)
 
ClientInitialAccessModel createClientInitialAccessModel (RealmModel realm, int expiration, int count)
 
ClientInitialAccessModel getClientInitialAccessModel (RealmModel realm, String id)
 
void removeClientInitialAccessModel (RealmModel realm, String id)
 
List< ClientInitialAccessModellistClientInitialAccess (RealmModel realm)
 
void removeExpiredClientInitialAccess ()
 
void decreaseRemainingCount (RealmModel realm, ClientInitialAccessModel clientInitialAccess)
 

限定公開変数類

EntityManager em
 

静的限定公開変数類

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

非公開メンバ関数

ClientInitialAccessModel entityToModel (ClientInitialAccessEntity entity)
 

非公開変数類

final KeycloakSession session
 

詳解

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ JpaRealmProvider()

org.keycloak.models.jpa.JpaRealmProvider.JpaRealmProvider ( KeycloakSession  session,
EntityManager  em 
)
inline
56  {
57  this.session = session;
58  this.em = em;
59  }
EntityManager em
Definition: JpaRealmProvider.java:54
final KeycloakSession session
Definition: JpaRealmProvider.java:53

関数詳解

◆ addClient() [1/2]

ClientModel org.keycloak.models.jpa.JpaRealmProvider.addClient ( RealmModel  realm,
String  clientId 
)
inline

org.keycloak.models.ClientProviderを実装しています。

481  {
482  return addClient(realm, KeycloakModelUtils.generateId(), clientId);
483  }
ClientModel addClient(RealmModel realm, String clientId)
Definition: JpaRealmProvider.java:481

◆ addClient() [2/2]

ClientModel org.keycloak.models.jpa.JpaRealmProvider.addClient ( RealmModel  realm,
String  id,
String  clientId 
)
inline

org.keycloak.models.ClientProviderを実装しています。

486  {
487  if (clientId == null) {
488  clientId = id;
489  }
490  ClientEntity entity = new ClientEntity();
491  entity.setId(id);
492  entity.setClientId(clientId);
493  entity.setEnabled(true);
494  entity.setStandardFlowEnabled(true);
495  RealmEntity realmRef = em.getReference(RealmEntity.class, realm.getId());
496  entity.setRealm(realmRef);
497  em.persist(entity);
498  em.flush();
499  final ClientModel resource = new ClientAdapter(realm, em, session, entity);
500 
501  em.flush();
502  session.getKeycloakSessionFactory().publish(new RealmModel.ClientCreationEvent() {
503  @Override
504  public ClientModel getCreatedClient() {
505  return resource;
506  }
507  });
508  return resource;
509  }
EntityManager em
Definition: JpaRealmProvider.java:54
KeycloakSessionFactory getKeycloakSessionFactory()
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ addClientRole() [1/2]

RoleModel org.keycloak.models.jpa.JpaRealmProvider.addClientRole ( RealmModel  realm,
ClientModel  client,
String  name 
)
inline

org.keycloak.models.ClientProviderを実装しています。

222  {
223  return addClientRole(realm, client, KeycloakModelUtils.generateId(), name);
224  }
RoleModel addClientRole(RealmModel realm, ClientModel client, String name)
Definition: JpaRealmProvider.java:222

◆ addClientRole() [2/2]

RoleModel org.keycloak.models.jpa.JpaRealmProvider.addClientRole ( RealmModel  realm,
ClientModel  client,
String  id,
String  name 
)
inline

org.keycloak.models.ClientProviderを実装しています。

226  {
227  if (getClientRole(realm, client, name) != null) {
228  throw new ModelDuplicateException();
229  }
230  ClientEntity clientEntity = em.getReference(ClientEntity.class, client.getId());
231  RoleEntity roleEntity = new RoleEntity();
232  roleEntity.setId(id);
233  roleEntity.setName(name);
234  roleEntity.setClient(clientEntity);
235  roleEntity.setClientRole(true);
236  roleEntity.setRealmId(realm.getId());
237  em.persist(roleEntity);
238  RoleAdapter adapter = new RoleAdapter(session, realm, em, roleEntity);
239  return adapter;
240  }
EntityManager em
Definition: JpaRealmProvider.java:54
RoleModel getClientRole(RealmModel realm, ClientModel client, String name)
Definition: JpaRealmProvider.java:257
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ addRealmRole() [1/2]

RoleModel org.keycloak.models.jpa.JpaRealmProvider.addRealmRole ( RealmModel  realm,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

189  {
190  return addRealmRole(realm, KeycloakModelUtils.generateId(), name);
191 
192  }
RoleModel addRealmRole(RealmModel realm, String name)
Definition: JpaRealmProvider.java:189

◆ addRealmRole() [2/2]

RoleModel org.keycloak.models.jpa.JpaRealmProvider.addRealmRole ( RealmModel  realm,
String  id,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

194  {
195  if (getRealmRole(realm, name) != null) {
196  throw new ModelDuplicateException();
197  }
198  RoleEntity entity = new RoleEntity();
199  entity.setId(id);
200  entity.setName(name);
201  RealmEntity ref = em.getReference(RealmEntity.class, realm.getId());
202  entity.setRealm(ref);
203  entity.setRealmId(realm.getId());
204  em.persist(entity);
205  em.flush();
206  RoleAdapter adapter = new RoleAdapter(session, realm, em, entity);
207  return adapter;
208 
209  }
EntityManager em
Definition: JpaRealmProvider.java:54
RoleModel getRealmRole(RealmModel realm, String name)
Definition: JpaRealmProvider.java:212
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ addTopLevelGroup()

void org.keycloak.models.jpa.JpaRealmProvider.addTopLevelGroup ( RealmModel  realm,
GroupModel  subGroup 
)
inline

org.keycloak.models.RealmProviderを実装しています。

474  {
475  subGroup.setParent(null);
476  }

◆ close()

void org.keycloak.models.jpa.JpaRealmProvider.close ( )
inline

org.keycloak.models.RealmProviderを実装しています。

185  {
186  }

◆ createClientInitialAccessModel()

ClientInitialAccessModel org.keycloak.models.jpa.JpaRealmProvider.createClientInitialAccessModel ( RealmModel  realm,
int  expiration,
int  count 
)
inline

org.keycloak.models.RealmProviderを実装しています。

624  {
625  RealmEntity realmEntity = em.find(RealmEntity.class, realm.getId());
626 
627  ClientInitialAccessEntity entity = new ClientInitialAccessEntity();
628  entity.setId(KeycloakModelUtils.generateId());
629  entity.setRealm(realmEntity);
630 
631  entity.setCount(count);
632  entity.setRemainingCount(count);
633 
634  int currentTime = Time.currentTime();
635  entity.setTimestamp(currentTime);
636  entity.setExpiration(expiration);
637 
638  em.persist(entity);
639 
640  return entityToModel(entity);
641  }
EntityManager em
Definition: JpaRealmProvider.java:54
ClientInitialAccessModel entityToModel(ClientInitialAccessEntity entity)
Definition: JpaRealmProvider.java:691

◆ createGroup() [1/2]

GroupModel org.keycloak.models.jpa.JpaRealmProvider.createGroup ( RealmModel  realm,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

452  {
453  String id = KeycloakModelUtils.generateId();
454  return createGroup(realm, id, name);
455  }
GroupModel createGroup(RealmModel realm, String name)
Definition: JpaRealmProvider.java:452

◆ createGroup() [2/2]

GroupModel org.keycloak.models.jpa.JpaRealmProvider.createGroup ( RealmModel  realm,
String  id,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

458  {
459  if (id == null) id = KeycloakModelUtils.generateId();
460  GroupEntity groupEntity = new GroupEntity();
461  groupEntity.setId(id);
462  groupEntity.setName(name);
463  RealmEntity realmEntity = em.getReference(RealmEntity.class, realm.getId());
464  groupEntity.setRealm(realmEntity);
465  em.persist(groupEntity);
466  em.flush();
467  realmEntity.getGroups().add(groupEntity);
468 
469  GroupAdapter adapter = new GroupAdapter(realm, em, groupEntity);
470  return adapter;
471  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ createRealm() [1/2]

RealmModel org.keycloak.models.jpa.JpaRealmProvider.createRealm ( String  name)
inline

org.keycloak.models.RealmProviderを実装しています。

67  {
68  return createRealm(KeycloakModelUtils.generateId(), name);
69  }
RealmModel createRealm(String name)
Definition: JpaRealmProvider.java:67

◆ createRealm() [2/2]

RealmModel org.keycloak.models.jpa.JpaRealmProvider.createRealm ( String  id,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

72  {
73  RealmEntity realm = new RealmEntity();
74  realm.setName(name);
75  realm.setId(id);
76  em.persist(realm);
77  em.flush();
78  final RealmModel adapter = new RealmAdapter(session, em, realm);
79  session.getKeycloakSessionFactory().publish(new RealmModel.RealmCreationEvent() {
80  @Override
81  public RealmModel getCreatedRealm() {
82  return adapter;
83  }
84  });
85  return adapter;
86  }
EntityManager em
Definition: JpaRealmProvider.java:54
KeycloakSessionFactory getKeycloakSessionFactory()
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ decreaseRemainingCount()

void org.keycloak.models.jpa.JpaRealmProvider.decreaseRemainingCount ( RealmModel  realm,
ClientInitialAccessModel  clientInitialAccess 
)
inline

org.keycloak.models.RealmProviderを実装しています。

685  {
686  em.createNamedQuery("decreaseClientInitialAccessRemainingCount")
687  .setParameter("id", clientInitialAccess.getId())
688  .executeUpdate();
689  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ entityToModel()

ClientInitialAccessModel org.keycloak.models.jpa.JpaRealmProvider.entityToModel ( ClientInitialAccessEntity  entity)
inlineprivate
691  {
692  ClientInitialAccessModel model = new ClientInitialAccessModel();
693  model.setId(entity.getId());
694  model.setCount(entity.getCount());
695  model.setRemainingCount(entity.getRemainingCount());
696  model.setExpiration(entity.getExpiration());
697  model.setTimestamp(entity.getTimestamp());
698  return model;
699  }

◆ getClientByClientId()

ClientModel org.keycloak.models.jpa.JpaRealmProvider.getClientByClientId ( String  clientId,
RealmModel  realm 
)
inline

org.keycloak.storage.client.ClientLookupProviderを実装しています。

537  {
538  TypedQuery<String> query = em.createNamedQuery("findClientIdByClientId", String.class);
539  query.setParameter("clientId", clientId);
540  query.setParameter("realm", realm.getId());
541  List<String> results = query.getResultList();
542  if (results.isEmpty()) return null;
543  String id = results.get(0);
544  return session.realms().getClientById(id, realm);
545  }
EntityManager em
Definition: JpaRealmProvider.java:54
final KeycloakSession session
Definition: JpaRealmProvider.java:53
ClientModel getClientById(String id, RealmModel realm)

◆ getClientById()

ClientModel org.keycloak.models.jpa.JpaRealmProvider.getClientById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.storage.client.ClientLookupProviderを実装しています。

527  {
528  ClientEntity app = em.find(ClientEntity.class, id);
529  // Check if application belongs to this realm
530  if (app == null || !realm.getId().equals(app.getRealm().getId())) return null;
531  ClientAdapter client = new ClientAdapter(realm, em, session, app);
532  return client;
533 
534  }
EntityManager em
Definition: JpaRealmProvider.java:54
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getClientInitialAccessModel()

ClientInitialAccessModel org.keycloak.models.jpa.JpaRealmProvider.getClientInitialAccessModel ( RealmModel  realm,
String  id 
)
inline

org.keycloak.models.RealmProviderを実装しています。

644  {
645  ClientInitialAccessEntity entity = em.find(ClientInitialAccessEntity.class, id);
646  if (entity == null) {
647  return null;
648  } else {
649  return entityToModel(entity);
650  }
651  }
EntityManager em
Definition: JpaRealmProvider.java:54
ClientInitialAccessModel entityToModel(ClientInitialAccessEntity entity)
Definition: JpaRealmProvider.java:691

◆ getClientRole()

RoleModel org.keycloak.models.jpa.JpaRealmProvider.getClientRole ( RealmModel  realm,
ClientModel  client,
String  name 
)
inline

org.keycloak.models.ClientProviderを実装しています。

257  {
258  TypedQuery<String> query = em.createNamedQuery("getClientRoleIdByName", String.class);
259  query.setParameter("name", name);
260  query.setParameter("client", client.getId());
261  List<String> roles = query.getResultList();
262  if (roles.isEmpty()) return null;
263  return session.realms().getRoleById(roles.get(0), realm);
264  }
EntityManager em
Definition: JpaRealmProvider.java:54
RoleModel getRoleById(String id, RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getClientRoles()

Set<RoleModel> org.keycloak.models.jpa.JpaRealmProvider.getClientRoles ( RealmModel  realm,
ClientModel  client 
)
inline

org.keycloak.models.ClientProviderを実装しています。

268  {
269  Set<RoleModel> list = new HashSet<>();
270  TypedQuery<String> query = em.createNamedQuery("getClientRoleIds", String.class);
271  query.setParameter("client", client.getId());
272  List<String> roles = query.getResultList();
273  for (String id : roles) {
274  list.add(session.realms().getRoleById(id, realm));
275  }
276  return list;
277 
278  }
EntityManager em
Definition: JpaRealmProvider.java:54
RoleModel getRoleById(String id, RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getClients()

List<ClientModel> org.keycloak.models.jpa.JpaRealmProvider.getClients ( RealmModel  realm)
inline

org.keycloak.models.ClientProviderを実装しています。

512  {
513  TypedQuery<String> query = em.createNamedQuery("getClientIdsByRealm", String.class);
514  query.setParameter("realm", realm.getId());
515  List<String> clients = query.getResultList();
516  if (clients.isEmpty()) return Collections.EMPTY_LIST;
517  List<ClientModel> list = new LinkedList<>();
518  for (String id : clients) {
519  ClientModel client = session.realms().getClientById(id, realm);
520  if (client != null) list.add(client);
521  }
522  return Collections.unmodifiableList(list);
523 
524  }
EntityManager em
Definition: JpaRealmProvider.java:54
final KeycloakSession session
Definition: JpaRealmProvider.java:53
ClientModel getClientById(String id, RealmModel realm)

◆ getClientScopeById()

ClientScopeModel org.keycloak.models.jpa.JpaRealmProvider.getClientScopeById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.RealmProviderを実装しています。

589  {
590  ClientScopeEntity app = em.find(ClientScopeEntity.class, id);
591 
592  // Check if application belongs to this realm
593  if (app == null || !realm.getId().equals(app.getRealm().getId())) return null;
594  ClientScopeAdapter adapter = new ClientScopeAdapter(realm, em, session, app);
595  return adapter;
596  }
EntityManager em
Definition: JpaRealmProvider.java:54
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getGroupById()

GroupModel org.keycloak.models.jpa.JpaRealmProvider.getGroupById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.RealmProviderを実装しています。

324  {
325  GroupEntity groupEntity = em.find(GroupEntity.class, id);
326  if (groupEntity == null) return null;
327  if (!groupEntity.getRealm().getId().equals(realm.getId())) return null;
328  GroupAdapter adapter = new GroupAdapter(realm, em, groupEntity);
329  return adapter;
330  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ getGroups()

List<GroupModel> org.keycloak.models.jpa.JpaRealmProvider.getGroups ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

346  {
347  RealmEntity ref = em.getReference(RealmEntity.class, realm.getId());
348 
349  return ref.getGroups().stream()
350  .map(g -> session.realms().getGroupById(g.getId(), realm))
351  .sorted(Comparator.comparing(GroupModel::getName))
352  .collect(Collectors.collectingAndThen(
353  Collectors.toList(), Collections::unmodifiableList));
354  }
EntityManager em
Definition: JpaRealmProvider.java:54
GroupModel getGroupById(String id, RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getGroupsCount()

Long org.keycloak.models.jpa.JpaRealmProvider.getGroupsCount ( RealmModel  realm,
Boolean  onlyTopGroups 
)
inline

org.keycloak.models.RealmProviderを実装しています。

357  {
358  String query = "getGroupCount";
359  if(Objects.equals(onlyTopGroups, Boolean.TRUE)) {
360  query = "getTopLevelGroupCount";
361  }
362  Long count = em.createNamedQuery(query, Long.class)
363  .setParameter("realm", realm.getId())
364  .getSingleResult();
365 
366  return count;
367  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ getGroupsCountByNameContaining()

Long org.keycloak.models.jpa.JpaRealmProvider.getGroupsCountByNameContaining ( RealmModel  realm,
String  search 
)
inline

org.keycloak.models.RealmProviderを実装しています。

370  {
371  return (long) searchForGroupByName(realm, search, null, null).size();
372  }
List< GroupModel > searchForGroupByName(RealmModel realm, String search, Integer first, Integer max)
Definition: JpaRealmProvider.java:599

◆ getMigrationModel()

MigrationModel org.keycloak.models.jpa.JpaRealmProvider.getMigrationModel ( )
inline

org.keycloak.models.RealmProviderを実装しています。

62  {
63  return new MigrationModelAdapter(em);
64  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ getRealm()

RealmModel org.keycloak.models.jpa.JpaRealmProvider.getRealm ( String  id)
inline

org.keycloak.models.RealmProviderを実装しています。

89  {
90  RealmEntity realm = em.find(RealmEntity.class, id);
91  if (realm == null) return null;
92  RealmAdapter adapter = new RealmAdapter(session, em, realm);
93  return adapter;
94  }
EntityManager em
Definition: JpaRealmProvider.java:54
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getRealmByName()

RealmModel org.keycloak.models.jpa.JpaRealmProvider.getRealmByName ( String  name)
inline

org.keycloak.models.RealmProviderを実装しています。

110  {
111  TypedQuery<String> query = em.createNamedQuery("getRealmIdByName", String.class);
112  query.setParameter("name", name);
113  List<String> entities = query.getResultList();
114  if (entities.isEmpty()) return null;
115  if (entities.size() > 1) throw new IllegalStateException("Should not be more than one realm with same name");
116  String id = query.getResultList().get(0);
117 
118  return session.realms().getRealm(id);
119  }
EntityManager em
Definition: JpaRealmProvider.java:54
RealmModel getRealm(String id)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getRealmRole()

RoleModel org.keycloak.models.jpa.JpaRealmProvider.getRealmRole ( RealmModel  realm,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

212  {
213  TypedQuery<String> query = em.createNamedQuery("getRealmRoleIdByName", String.class);
214  query.setParameter("name", name);
215  query.setParameter("realm", realm.getId());
216  List<String> roles = query.getResultList();
217  if (roles.isEmpty()) return null;
218  return session.realms().getRoleById(roles.get(0), realm);
219  }
EntityManager em
Definition: JpaRealmProvider.java:54
RoleModel getRoleById(String id, RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getRealmRoles()

Set<RoleModel> org.keycloak.models.jpa.JpaRealmProvider.getRealmRoles ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

243  {
244  TypedQuery<String> query = em.createNamedQuery("getRealmRoleIds", String.class);
245  query.setParameter("realm", realm.getId());
246  List<String> roles = query.getResultList();
247 
248  if (roles.isEmpty()) return Collections.EMPTY_SET;
249  Set<RoleModel> list = new HashSet<>();
250  for (String id : roles) {
251  list.add(session.realms().getRoleById(id, realm));
252  }
253  return Collections.unmodifiableSet(list);
254  }
EntityManager em
Definition: JpaRealmProvider.java:54
RoleModel getRoleById(String id, RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getRealms()

List<RealmModel> org.keycloak.models.jpa.JpaRealmProvider.getRealms ( )
inline

org.keycloak.models.RealmProviderを実装しています。

97  {
98  TypedQuery<String> query = em.createNamedQuery("getAllRealmIds", String.class);
99  List<String> entities = query.getResultList();
100  List<RealmModel> realms = new ArrayList<RealmModel>();
101  for (String id : entities) {
102  RealmModel realm = session.realms().getRealm(id);
103  if (realm != null) realms.add(realm);
104 
105  }
106  return realms;
107  }
EntityManager em
Definition: JpaRealmProvider.java:54
RealmModel getRealm(String id)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getRoleById()

RoleModel org.keycloak.models.jpa.JpaRealmProvider.getRoleById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.RealmProviderを実装しています。

315  {
316  RoleEntity entity = em.find(RoleEntity.class, id);
317  if (entity == null) return null;
318  if (!realm.getId().equals(entity.getRealmId())) return null;
319  RoleAdapter adapter = new RoleAdapter(session, realm, em, entity);
320  return adapter;
321  }
EntityManager em
Definition: JpaRealmProvider.java:54
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getTopLevelGroups() [1/2]

List<GroupModel> org.keycloak.models.jpa.JpaRealmProvider.getTopLevelGroups ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

375  {
376  RealmEntity ref = em.getReference(RealmEntity.class, realm.getId());
377 
378  return ref.getGroups().stream()
379  .filter(g -> g.getParent() == null)
380  .map(g -> session.realms().getGroupById(g.getId(), realm))
381  .sorted(Comparator.comparing(GroupModel::getName))
382  .collect(Collectors.collectingAndThen(
383  Collectors.toList(), Collections::unmodifiableList));
384  }
EntityManager em
Definition: JpaRealmProvider.java:54
GroupModel getGroupById(String id, RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ getTopLevelGroups() [2/2]

List<GroupModel> org.keycloak.models.jpa.JpaRealmProvider.getTopLevelGroups ( RealmModel  realm,
Integer  first,
Integer  max 
)
inline

org.keycloak.models.RealmProviderを実装しています。

387  {
388  List<String> groupIds = em.createNamedQuery("getTopLevelGroupIds", String.class)
389  .setParameter("realm", realm.getId())
390  .setFirstResult(first)
391  .setMaxResults(max)
392  .getResultList();
393  List<GroupModel> list = new ArrayList<>();
394  if(Objects.nonNull(groupIds) && !groupIds.isEmpty()) {
395  for (String id : groupIds) {
396  GroupModel group = getGroupById(id, realm);
397  list.add(group);
398  }
399  }
400 
401  list.sort(Comparator.comparing(GroupModel::getName));
402 
403  return Collections.unmodifiableList(list);
404  }
EntityManager em
Definition: JpaRealmProvider.java:54
GroupModel getGroupById(String id, RealmModel realm)
Definition: JpaRealmProvider.java:324

◆ listClientInitialAccess()

List<ClientInitialAccessModel> org.keycloak.models.jpa.JpaRealmProvider.listClientInitialAccess ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

663  {
664  RealmEntity realmEntity = em.find(RealmEntity.class, realm.getId());
665 
666  TypedQuery<ClientInitialAccessEntity> query = em.createNamedQuery("findClientInitialAccessByRealm", ClientInitialAccessEntity.class);
667  query.setParameter("realm", realmEntity);
668  List<ClientInitialAccessEntity> entities = query.getResultList();
669 
670  return entities.stream()
671  .map(this::entityToModel)
672  .collect(Collectors.toList());
673  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ moveGroup()

void org.keycloak.models.jpa.JpaRealmProvider.moveGroup ( RealmModel  realm,
GroupModel  group,
GroupModel  toParent 
)
inline

org.keycloak.models.RealmProviderを実装しています。

333  {
334  if (toParent != null && group.getId().equals(toParent.getId())) {
335  return;
336  }
337  if (group.getParentId() != null) {
338  group.getParent().removeChild(group);
339  }
340  group.setParent(toParent);
341  if (toParent != null) toParent.addChild(group);
342  else session.realms().addTopLevelGroup(realm, group);
343  }
final KeycloakSession session
Definition: JpaRealmProvider.java:53
void addTopLevelGroup(RealmModel realm, GroupModel subGroup)

◆ removeClient()

boolean org.keycloak.models.jpa.JpaRealmProvider.removeClient ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.ClientProviderを実装しています。

548  {
549  final ClientModel client = getClientById(id, realm);
550  if (client == null) return false;
551 
552  session.users().preRemove(realm, client);
553 
554  for (RoleModel role : client.getRoles()) {
555  // No need to go through cache. Roles were already invalidated
556  removeRole(realm, role);
557  }
558 
559  ClientEntity clientEntity = ((ClientAdapter)client).getEntity();
560 
561  session.getKeycloakSessionFactory().publish(new RealmModel.ClientRemovedEvent() {
562  @Override
563  public ClientModel getClient() {
564  return client;
565  }
566 
567  @Override
568  public KeycloakSession getKeycloakSession() {
569  return session;
570  }
571  });
572 
573  int countRemoved = em.createNamedQuery("deleteClientScopeClientMappingByClient")
574  .setParameter("client", clientEntity)
575  .executeUpdate();
576  em.remove(clientEntity); // i have no idea why, but this needs to come before deleteScopeMapping
577 
578  try {
579  em.flush();
580  } catch (RuntimeException e) {
581  logger.errorv("Unable to delete client entity: {0} from realm {1}", client.getClientId(), realm.getName());
582  throw e;
583  }
584 
585  return true;
586  }
EntityManager em
Definition: JpaRealmProvider.java:54
static final Logger logger
Definition: JpaRealmProvider.java:52
KeycloakSessionFactory getKeycloakSessionFactory()
ClientModel getClientById(String id, RealmModel realm)
Definition: JpaRealmProvider.java:527
void preRemove(RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53
boolean removeRole(RealmModel realm, RoleModel role)
Definition: JpaRealmProvider.java:281

◆ removeClientInitialAccessModel()

void org.keycloak.models.jpa.JpaRealmProvider.removeClientInitialAccessModel ( RealmModel  realm,
String  id 
)
inline

org.keycloak.models.RealmProviderを実装しています。

654  {
655  ClientInitialAccessEntity entity = em.find(ClientInitialAccessEntity.class, id);
656  if (entity != null) {
657  em.remove(entity);
658  em.flush();
659  }
660  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ removeExpiredClientInitialAccess()

void org.keycloak.models.jpa.JpaRealmProvider.removeExpiredClientInitialAccess ( )
inline

org.keycloak.models.RealmProviderを実装しています。

676  {
677  int currentTime = Time.currentTime();
678 
679  em.createNamedQuery("removeExpiredClientInitialAccess")
680  .setParameter("currentTime", currentTime)
681  .executeUpdate();
682  }
EntityManager em
Definition: JpaRealmProvider.java:54

◆ removeGroup()

boolean org.keycloak.models.jpa.JpaRealmProvider.removeGroup ( RealmModel  realm,
GroupModel  group 
)
inline

org.keycloak.models.RealmProviderを実装しています。

407  {
408  if (group == null) {
409  return false;
410  }
411 
412  GroupModel.GroupRemovedEvent event = new GroupModel.GroupRemovedEvent() {
413  @Override
414  public RealmModel getRealm() {
415  return realm;
416  }
417 
418  @Override
419  public GroupModel getGroup() {
420  return group;
421  }
422 
423  @Override
424  public KeycloakSession getKeycloakSession() {
425  return session;
426  }
427  };
429 
430  session.users().preRemove(realm, group);
431 
432  realm.removeDefaultGroup(group);
433  for (GroupModel subGroup : group.getSubGroups()) {
434  session.realms().removeGroup(realm, subGroup);
435  }
436  GroupEntity groupEntity = em.find(GroupEntity.class, group.getId());
437  if ((groupEntity == null) || (!groupEntity.getRealm().getId().equals(realm.getId()))) {
438  return false;
439  }
440  em.createNamedQuery("deleteGroupRoleMappingsByGroup").setParameter("group", groupEntity).executeUpdate();
441 
442  RealmEntity realmEntity = em.getReference(RealmEntity.class, realm.getId());
443  realmEntity.getGroups().remove(groupEntity);
444 
445  em.remove(groupEntity);
446  return true;
447 
448 
449  }
EntityManager em
Definition: JpaRealmProvider.java:54
KeycloakSessionFactory getKeycloakSessionFactory()
void preRemove(RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53
RealmModel getRealm(String id)
Definition: JpaRealmProvider.java:89
boolean removeGroup(RealmModel realm, GroupModel group)

◆ removeRealm()

boolean org.keycloak.models.jpa.JpaRealmProvider.removeRealm ( String  id)
inline

org.keycloak.models.RealmProviderを実装しています。

122  {
123  RealmEntity realm = em.find(RealmEntity.class, id);
124  if (realm == null) {
125  return false;
126  }
127  em.refresh(realm);
128  final RealmAdapter adapter = new RealmAdapter(session, em, realm);
129  session.users().preRemove(adapter);
130 
131  realm.getDefaultGroups().clear();
132  em.flush();
133 
134  int num = em.createNamedQuery("deleteGroupRoleMappingsByRealm")
135  .setParameter("realm", realm).executeUpdate();
136 
137  TypedQuery<String> query = em.createNamedQuery("getClientIdsByRealm", String.class);
138  query.setParameter("realm", realm.getId());
139  List<String> clients = query.getResultList();
140  for (String client : clients) {
141  // No need to go through cache. Clients were already invalidated
142  removeClient(client, adapter);
143  }
144 
145  num = em.createNamedQuery("deleteDefaultClientScopeRealmMappingByRealm")
146  .setParameter("realm", realm).executeUpdate();
147 
148  for (ClientScopeEntity a : new LinkedList<>(realm.getClientScopes())) {
149  adapter.removeClientScope(a.getId());
150  }
151 
152  for (RoleModel role : adapter.getRoles()) {
153  // No need to go through cache. Roles were already invalidated
154  removeRole(adapter, role);
155  }
156 
157  for (GroupModel group : adapter.getGroups()) {
158  session.realms().removeGroup(adapter, group);
159  }
160 
161  num = em.createNamedQuery("removeClientInitialAccessByRealm")
162  .setParameter("realm", realm).executeUpdate();
163 
164  em.remove(realm);
165 
166  em.flush();
167  em.clear();
168 
169  session.getKeycloakSessionFactory().publish(new RealmModel.RealmRemovedEvent() {
170  @Override
171  public RealmModel getRealm() {
172  return adapter;
173  }
174 
175  @Override
176  public KeycloakSession getKeycloakSession() {
177  return session;
178  }
179  });
180 
181  return true;
182  }
EntityManager em
Definition: JpaRealmProvider.java:54
KeycloakSessionFactory getKeycloakSessionFactory()
void preRemove(RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53
RealmModel getRealm(String id)
Definition: JpaRealmProvider.java:89
boolean removeRole(RealmModel realm, RoleModel role)
Definition: JpaRealmProvider.java:281
boolean removeClient(String id, RealmModel realm)
Definition: JpaRealmProvider.java:548
boolean removeGroup(RealmModel realm, GroupModel group)

◆ removeRole()

boolean org.keycloak.models.jpa.JpaRealmProvider.removeRole ( RealmModel  realm,
RoleModel  role 
)
inline

org.keycloak.models.RealmProviderを実装しています。

281  {
282  session.users().preRemove(realm, role);
283  RoleContainerModel container = role.getContainer();
284  if (container.getDefaultRoles().contains(role.getName())) {
285  container.removeDefaultRoles(role.getName());
286  }
287  RoleEntity roleEntity = em.getReference(RoleEntity.class, role.getId());
288  String compositeRoleTable = JpaUtils.getTableNameForNativeQuery("COMPOSITE_ROLE", em);
289  em.createNativeQuery("delete from " + compositeRoleTable + " where CHILD_ROLE = :role").setParameter("role", roleEntity).executeUpdate();
290  realm.getClients().forEach(c -> c.deleteScopeMapping(role));
291  em.createNamedQuery("deleteClientScopeRoleMappingByRole").setParameter("role", roleEntity).executeUpdate();
292  int val = em.createNamedQuery("deleteGroupRoleMappingsByRole").setParameter("roleId", roleEntity.getId()).executeUpdate();
293 
294  em.flush();
295  em.remove(roleEntity);
296 
297  session.getKeycloakSessionFactory().publish(new RoleContainerModel.RoleRemovedEvent() {
298  @Override
299  public RoleModel getRole() {
300  return role;
301  }
302 
303  @Override
304  public KeycloakSession getKeycloakSession() {
305  return session;
306  }
307  });
308 
309  em.flush();
310  return true;
311 
312  }
EntityManager em
Definition: JpaRealmProvider.java:54
KeycloakSessionFactory getKeycloakSessionFactory()
void preRemove(RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

◆ searchForGroupByName()

List<GroupModel> org.keycloak.models.jpa.JpaRealmProvider.searchForGroupByName ( RealmModel  realm,
String  search,
Integer  first,
Integer  max 
)
inline

org.keycloak.models.RealmProviderを実装しています。

599  {
600  TypedQuery<String> query = em.createNamedQuery("getGroupIdsByNameContaining", String.class)
601  .setParameter("realm", realm.getId())
602  .setParameter("search", search);
603  if(Objects.nonNull(first) && Objects.nonNull(max)) {
604  query= query.setFirstResult(first).setMaxResults(max);
605  }
606  List<String> groups = query.getResultList();
607  if (Objects.isNull(groups)) return Collections.EMPTY_LIST;
608  List<GroupModel> list = new ArrayList<>();
609  for (String id : groups) {
610  GroupModel groupById = session.realms().getGroupById(id, realm);
611  while(Objects.nonNull(groupById.getParentId())) {
612  groupById = session.realms().getGroupById(groupById.getParentId(), realm);
613  }
614  if(!list.contains(groupById)) {
615  list.add(groupById);
616  }
617  }
618  list.sort(Comparator.comparing(GroupModel::getName));
619 
620  return Collections.unmodifiableList(list);
621  }
EntityManager em
Definition: JpaRealmProvider.java:54
GroupModel getGroupById(String id, RealmModel realm)
final KeycloakSession session
Definition: JpaRealmProvider.java:53

メンバ詳解

◆ em

EntityManager org.keycloak.models.jpa.JpaRealmProvider.em
protected

◆ logger

final Logger org.keycloak.models.jpa.JpaRealmProvider.logger = Logger.getLogger(JpaRealmProvider.class)
staticprotected

◆ session

final KeycloakSession org.keycloak.models.jpa.JpaRealmProvider.session
private

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