add RbacUserController/-Entity/-Repository
This commit is contained in:
@ -0,0 +1,46 @@
|
||||
package net.hostsharing.hsadminng.rbac.rbacuser;
|
||||
|
||||
import net.hostsharing.hsadminng.context.Context;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@RestController
|
||||
public class RbacUserController {
|
||||
|
||||
@Autowired
|
||||
private Context context;
|
||||
|
||||
@Autowired
|
||||
private RbacUserRepository rbacUserRepository;
|
||||
|
||||
@GetMapping(value = "/api/rbacuser")
|
||||
@Transactional
|
||||
public Iterable<RbacUserEntity> listUsers(
|
||||
@RequestHeader(name = "current-user") String currentUserName,
|
||||
@RequestHeader(name = "assumed-roles", required = false) String assumedRoles,
|
||||
@RequestParam(name="name", required = false) String userName
|
||||
) {
|
||||
context.setCurrentUser(currentUserName);
|
||||
if (assumedRoles != null && !assumedRoles.isBlank()) {
|
||||
context.assumeRoles(assumedRoles);
|
||||
}
|
||||
return rbacUserRepository.findByOptionalNameLike(userName);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/api/rbacuser/{userName}/permissions")
|
||||
@Transactional
|
||||
public Iterable<RbacUserPermission> listUserPermissions(
|
||||
@RequestHeader(name = "current-user") String currentUserName,
|
||||
@RequestHeader(name = "assumed-roles", required = false) String assumedRoles,
|
||||
@PathVariable(name= "userName") String userName
|
||||
) {
|
||||
context.setCurrentUser(currentUserName);
|
||||
if (assumedRoles != null && !assumedRoles.isBlank()) {
|
||||
context.assumeRoles(assumedRoles);
|
||||
}
|
||||
return rbacUserRepository.findPermissionsOfUser(userName);
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package net.hostsharing.hsadminng.rbac.rbacuser;
|
||||
|
||||
import lombok.*;
|
||||
import org.springframework.data.annotation.Immutable;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@Table(name = "rbacuser_rv")
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Immutable
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
//@SqlResultSetMapping(
|
||||
// name = "rbacUserPermissionMapping",
|
||||
// classes = {
|
||||
// @ConstructorResult(
|
||||
// targetClass = RbacUserPermission.class,
|
||||
// columns = {
|
||||
// @ColumnResult(name = "roleUuid", type = UUID.class),
|
||||
// @ColumnResult(name = "oleName", type = String.class),
|
||||
// @ColumnResult(name = "permissionUuid", type = UUID.class),
|
||||
// @ColumnResult(name = "op", type=String.class),
|
||||
// @ColumnResult(name = "objectTable", type=String.class),
|
||||
// @ColumnResult(name = "objectIdName", type =String.class),
|
||||
// @ColumnResult(name = "objectUuid", type = UUID.class),
|
||||
// @ColumnResult(name = "campId", type = Integer.class),
|
||||
// @ColumnResult(name = "userCount", type = Byte.class)
|
||||
// }
|
||||
// )
|
||||
// }
|
||||
//)
|
||||
//@NamedNativeQuery(
|
||||
// name = "grantedPermissions",
|
||||
// query = "SELECT * FROM grantedPermissions(:userName)",
|
||||
// resultSetMapping = "rbacUserPermissionMapping"
|
||||
//)
|
||||
public class RbacUserEntity {
|
||||
|
||||
@Id
|
||||
private UUID uuid;
|
||||
|
||||
private String name;
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package net.hostsharing.hsadminng.rbac.rbacuser;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public interface RbacUserPermission {
|
||||
|
||||
UUID getRoleUuid();
|
||||
String getRoleName();
|
||||
UUID getPermissionUuid();
|
||||
String getOp();
|
||||
String getObjectTable();
|
||||
String getObjectIdName();
|
||||
UUID getObjectUuid();
|
||||
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package net.hostsharing.hsadminng.rbac.rbacuser;
|
||||
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.Repository;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface RbacUserRepository extends Repository<RbacUserEntity, UUID> {
|
||||
|
||||
@Query("SELECT u FROM RbacUserEntity u WHERE :userName is null or u.name like concat(:userName, '%')")
|
||||
List<RbacUserEntity> findByOptionalNameLike(final String userName);
|
||||
|
||||
@Query(value = "SELECT * FROM grantedPermissions(:userName)", nativeQuery = true)
|
||||
Iterable<RbacUserPermission> findPermissionsOfUser(@Param("userName") String userName);
|
||||
}
|
Reference in New Issue
Block a user