8000 Added hybrid model provider with jpa stores by stianst · Pull Request #505 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions model/hybrid/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.0-beta-4-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>keycloak-model-hybrid</artifactId>
<name>Keycloak Model Hybrid</name>
<description/>

<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-model-api</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
package org.keycloak.models.hybrid;

import org.keycloak.models.realms.Application;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.utils.KeycloakModelUtils;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class ApplicationAdapter extends ClientAdapter implements ApplicationModel {

private Application application;

ApplicationAdapter(HybridModelProvider provider, Application application) {
super(provider, application);
this.application = application;
}

Application getApplication() {
return application;
}

@Override
public void updateApplication() {
application.updateApplication();
}

@Override
public String getName() {
return application.getName();
}

@Override
public void setName(String name) {
application.setName(name);
}

@Override
public boolean isSurrogateAuthRequired() {
return application.isSurrogateAuthRequired();
}

@Override
public void setSurrogateAuthRequired(boolean surrogateAuthRequired) {
application.setSurrogateAuthRequired(surrogateAuthRequired);
}

@Override
public String getManagementUrl() {
return application.getManagementUrl();
}

@Override
public void setManagementUrl(String url) {
application.setManagementUrl(url);
}

@Override
public String getBaseUrl() {
return application.getBaseUrl();
}

@Override
public void setBaseUrl(String url) {
application.setBaseUrl(url);
}

@Override
public List<String> getDefaultRoles() {
return application.getDefaultRoles();
}

@Override
public void addDefaultRole(String name) {
if (getRole(name) == null) {
addRole(name);
}

application.addDefaultRole(name);
}

@Override
public void updateDefaultRoles(String[] defaultRoles) {
application.updateDefaultRoles(defaultRoles);
}

@Override
public Set<RoleModel> getApplicationScopeMappings(ClientModel client) {
return provider.mappings().wrap(application.getApplicationScopeMappings(provider.mappings().unwrap(client)));
}

@Override
public boolean isBearerOnly() {
return application.isBearerOnly();
}

@Override
public void setBearerOnly(boolean only) {
application.setBearerOnly(only);
}

@Override
public RoleModel getRole(String name) {
return provider.mappings().wrap(application.getRole(name));
}

@Override
public RoleModel addRole(String name) {
return addRole(KeycloakModelUtils.generateId(), name);
}

@Override
public RoleModel addRole(String id, String name) {
return provider.mappings().wrap(application.addRole(id, name));
}

@Override
public boolean removeRole(RoleModel role) {
if (application.removeRole(provider.mappings().unwrap(role))) {
provider.users().onRoleRemoved(role.getId());
return true;
} else {
return false;
}
}

@Override
public Set<RoleModel> getRoles() {
return provider.mappings().wrap(application.getRoles());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
package org.keycloak.models.hybrid;

import org.keycloak.models.ClientModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.realms.Client;

import java.util.Set;

/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public abstract class ClientAdapter implements ClientModel {

protected HybridModelProvider provider;

protected Client client;

ClientAdapter(HybridModelProvider provider, Client client) {
this.provider = provider;
this.client = client;
}

@Override
public String getId() {
return client.getId();
}

@Override
public String getClientId() {
return client.getClientId();
}

@Override
public long getAllowedClaimsMask() {
return client.getAllowedClaimsMask();
}

@Override
public void setAllowedClaimsMask(long mask) {
client.setAllowedClaimsMask(mask);
}

@Override
public Set<String> getWebOrigins() {
return client.getWebOrigins();
}

@Override
public void setWebOrigins(Set<String> webOrigins) {
client.setWebOrigins(webOrigins);
}

@Override
public void addWebOrigin(String webOrigin) {
client.addWebOrigin(webOrigin);
}

@Override
public void removeWebOrigin(String webOrigin) {
client.removeWebOrigin(webOrigin);
}

@Override
public Set<String> getRedirectUris() {
return client.getRedirectUris();
}

@Override
public void setRedirectUris(Set<String> redirectUris) {
client.setRedirectUris(redirectUris);
}

@Override
public void addRedirectUri(String redirectUri) {
client.addRedirectUri(redirectUri);
}

@Override
public void removeRedirectUri(String redirectUri) {
client.removeRedirectUri(redirectUri);
}

@Override
public boolean isEnabled() {
return client.isEnabled();
}

@Override
public void setEnabled(boolean enabled) {
client.setEnabled(enabled);
}

@Override
public boolean validateSecret(String secret) {
return client.validateSecret(secret);
}

@Override
public String getSecret() {
return client.getSecret();
}

@Override
public void setSecret(String secret) {
client.setSecret(secret);
}

@Override
public boolean isPublicClient() {
return client.isPublicClient();
}

@Override
public void setPublicClient(boolean flag) {
client.setPublicClient(flag);
}

@Override
public boolean isDirectGrantsOnly() {
return client.isDirectGrantsOnly();
}

@Override
public void setDirectGrantsOnly(boolean flag) {
client.setDirectGrantsOnly(flag);
}

@Override
public Set<RoleModel> getScopeMappings() {
return provider.mappings().wrap(client.getScopeMappings());
}

@Override
public void addScopeMapping(RoleModel role) {
if (!hasScope(role)) {
client.addScopeMapping(provider.mappings().unwrap(role));
}
}

@Override
public void deleteScopeMapping(RoleModel role) {
client.deleteScopeMapping(provider.mappings().unwrap(role));
}

@Override
public Set<RoleModel> getRealmScopeMappings() {
return provider.mappings().wrap(client.getRealmScopeMappings());
}

@Override
public boolean hasScope(RoleModel role) {
Set<RoleModel> roles = getScopeMappings();
if (roles.contains(role)) {
return true;
}

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

return false;
}

@Override
public RealmModel getRealm() {
return provider.mappings().wrap(client.getRealm());
}

@Override
public int getNotBefore() {
return client.getNotBefore();
}

@Override
public void setNotBefore(int notBefore) {
client.setNotBefore(notBefore);
}

@Override
public Set<UserSessionModel> getUserSessions() {
return provider.mappings().wrapSessions(getRealm(), provider.sessions().getUserSessionsByClient(client.getRealm().getId(), client.getId()));
}

@Override
public int getActiveUserSessions() {
return provider.sessions().getActiveUserSessions(client.getRealm().getId(), client.getId());
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!this.getClass().equals(o.getClass())) return false;

ClientAdapter that = (ClientAdapter) o;
return that.getId().equals(getId());
}

}
Loading
0