Skip to content

Commit

Permalink
abstract group- and role models as impl base
Browse files Browse the repository at this point in the history
  • Loading branch information
dasniko committed Feb 6, 2025
1 parent fd17f62 commit 12769b0
Show file tree
Hide file tree
Showing 4 changed files with 230 additions and 214 deletions.
Original file line number Diff line number Diff line change
@@ -1,122 +1,9 @@
package dasniko.keycloak.user.flintstones;

import lombok.RequiredArgsConstructor;
import org.keycloak.models.ClientModel;
import org.keycloak.models.GroupModel;
import org.keycloak.models.RoleModel;
import org.keycloak.storage.ReadOnlyException;
import de.keycloak.models.AbstractGroupModel;

import java.util.List;
import java.util.Map;
import java.util.stream.Stream;

@RequiredArgsConstructor
public class FlintstoneUserGroupModel implements GroupModel {

private final String name;

@Override
public String getId() {
return getName();
}

@Override
public String getName() {
return name;
}

@Override
public void setName(String s) {
throw new ReadOnlyException("group is read only");
}

@Override
public void setSingleAttribute(String s, String s1) {
throw new ReadOnlyException("group is read only");
}

@Override
public void setAttribute(String s, List<String> list) {
throw new ReadOnlyException("group is read only");
}

@Override
public void removeAttribute(String s) {
throw new ReadOnlyException("group is read only");
}

@Override
public String getFirstAttribute(String s) {
return null;
}

@Override
public Stream<String> getAttributeStream(String s) {
return Stream.empty();
}

@Override
public Map<String, List<String>> getAttributes() {
return Map.of();
}

@Override
public GroupModel getParent() {
return null;
}

@Override
public String getParentId() {
return null;
}

@Override
public Stream<GroupModel> getSubGroupsStream() {
return Stream.empty();
}

@Override
public void setParent(GroupModel groupModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public void addChild(GroupModel groupModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public void removeChild(GroupModel groupModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public Stream<RoleModel> getRealmRoleMappingsStream() {
return Stream.empty();
}

@Override
public Stream<RoleModel> getClientRoleMappingsStream(ClientModel clientModel) {
return Stream.empty();
}

@Override
public boolean hasRole(RoleModel roleModel) {
return false;
}

@Override
public void grantRole(RoleModel roleModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public Stream<RoleModel> getRoleMappingsStream() {
return Stream.empty();
}

@Override
public void deleteRoleMapping(RoleModel roleModel) {
throw new ReadOnlyException("group is read only");
public class FlintstoneUserGroupModel extends AbstractGroupModel {
public FlintstoneUserGroupModel(String name) {
super(name);
}
}
Original file line number Diff line number Diff line change
@@ -1,103 +1,10 @@
package dasniko.keycloak.user.flintstones;

import lombok.RequiredArgsConstructor;
import org.keycloak.models.RealmModel;
import de.keycloak.models.AbstractRoleModel;
import org.keycloak.models.RoleContainerModel;
import org.keycloak.models.RoleModel;

import java.util.List;
import java.util.Map;
import java.util.stream.Stream;

/**
* @author Niko Köbler, https://www.n-k.de, @dasniko
*/
@RequiredArgsConstructor
public class FlintstoneUserRoleModel implements RoleModel {

private final String name;
private final RealmModel realm;

@Override
public String getName() {
return name;
}

@Override
public String getDescription() {
return null;
}

@Override
public void setDescription(String description) {
}

@Override
public String getId() {
return name;
}

@Override
public void setName(String name) {
}

@Override
public boolean isComposite() {
return false;
}

@Override
public void addCompositeRole(RoleModel role) {
}

@Override
public void removeCompositeRole(RoleModel role) {
}

@Override
public Stream<RoleModel> getCompositesStream(String search, Integer first, Integer max) {
return Stream.empty();
}

@Override
public boolean isClientRole() {
return false;
}

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

@Override
public RoleContainerModel getContainer() {
return realm;
}

@Override
public boolean hasRole(RoleModel role) {
return this.equals(role) || this.name.equals(role.getName());
}

@Override
public void setSingleAttribute(String name, String value) {
}

@Override
public void setAttribute(String name, List<String> values) {
}

@Override
public void removeAttribute(String name) {
}

@Override
public Stream<String> getAttributeStream(String name) {
return null;
}

@Override
public Map<String, List<String>> getAttributes() {
return null;
public class FlintstoneUserRoleModel extends AbstractRoleModel {
public FlintstoneUserRoleModel(String name, RoleContainerModel container) {
super(name, container);
}
}
122 changes: 122 additions & 0 deletions utils/src/main/java/de/keycloak/models/AbstractGroupModel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
package de.keycloak.models;

import lombok.RequiredArgsConstructor;
import org.keycloak.models.ClientModel;
import org.keycloak.models.GroupModel;
import org.keycloak.models.RoleModel;
import org.keycloak.storage.ReadOnlyException;

import java.util.List;
import java.util.Map;
import java.util.stream.Stream;

@RequiredArgsConstructor
public abstract class AbstractGroupModel implements GroupModel {

private final String name;

@Override
public String getId() {
return getName();
}

@Override
public String getName() {
return name;
}

@Override
public void setName(String s) {
throw new ReadOnlyException("group is read only");
}

@Override
public void setSingleAttribute(String s, String s1) {
throw new ReadOnlyException("group is read only");
}

@Override
public void setAttribute(String s, List<String> list) {
throw new ReadOnlyException("group is read only");
}

@Override
public void removeAttribute(String s) {
throw new ReadOnlyException("group is read only");
}

@Override
public String getFirstAttribute(String s) {
return null;
}

@Override
public Stream<String> getAttributeStream(String s) {
return Stream.empty();
}

@Override
public Map<String, List<String>> getAttributes() {
return Map.of();
}

@Override
public GroupModel getParent() {
return null;
}

@Override
public String getParentId() {
return null;
}

@Override
public Stream<GroupModel> getSubGroupsStream() {
return Stream.empty();
}

@Override
public void setParent(GroupModel groupModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public void addChild(GroupModel groupModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public void removeChild(GroupModel groupModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public Stream<RoleModel> getRealmRoleMappingsStream() {
return Stream.empty();
}

@Override
public Stream<RoleModel> getClientRoleMappingsStream(ClientModel clientModel) {
return Stream.empty();
}

@Override
public boolean hasRole(RoleModel roleModel) {
return false;
}

@Override
public void grantRole(RoleModel roleModel) {
throw new ReadOnlyException("group is read only");
}

@Override
public Stream<RoleModel> getRoleMappingsStream() {
return Stream.empty();
}

@Override
public void deleteRoleMapping(RoleModel roleModel) {
throw new ReadOnlyException("group is read only");
}
}
Loading

0 comments on commit 12769b0

Please sign in to comment.