mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-28 04:04:55 +08:00
feat(roles): Change list roles, get role and authorization info api to respond with groups (#3837)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -2,15 +2,15 @@ use common_utils::events::{ApiEventMetric, ApiEventsType};
|
||||
|
||||
use crate::user_role::{
|
||||
role::{
|
||||
CreateRoleRequest, GetRoleRequest, ListRolesResponse, RoleInfoResponse, UpdateRoleRequest,
|
||||
CreateRoleRequest, GetRoleRequest, ListRolesResponse, RoleInfoResponse,
|
||||
RoleInfoWithPermissionsResponse, UpdateRoleRequest,
|
||||
},
|
||||
AcceptInvitationRequest, AuthorizationInfoResponse, DeleteUserRoleRequest,
|
||||
TransferOrgOwnershipRequest, UpdateUserRoleRequest,
|
||||
};
|
||||
|
||||
common_utils::impl_misc_api_event_type!(
|
||||
ListRolesResponse,
|
||||
RoleInfoResponse,
|
||||
RoleInfoWithPermissionsResponse,
|
||||
GetRoleRequest,
|
||||
AuthorizationInfoResponse,
|
||||
UpdateUserRoleRequest,
|
||||
@ -18,5 +18,7 @@ common_utils::impl_misc_api_event_type!(
|
||||
DeleteUserRoleRequest,
|
||||
TransferOrgOwnershipRequest,
|
||||
CreateRoleRequest,
|
||||
UpdateRoleRequest
|
||||
UpdateRoleRequest,
|
||||
ListRolesResponse,
|
||||
RoleInfoResponse
|
||||
);
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
use common_enums::PermissionGroup;
|
||||
use common_utils::pii;
|
||||
|
||||
use crate::user::DashboardEntryResponse;
|
||||
@ -51,7 +52,14 @@ pub enum PermissionModule {
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct AuthorizationInfoResponse(pub Vec<ModuleInfo>);
|
||||
pub struct AuthorizationInfoResponse(pub Vec<AuthorizationInfo>);
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
#[serde(untagged)]
|
||||
pub enum AuthorizationInfo {
|
||||
Module(ModuleInfo),
|
||||
Group(GroupInfo),
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct ModuleInfo {
|
||||
@ -60,6 +68,13 @@ pub struct ModuleInfo {
|
||||
pub permissions: Vec<PermissionInfo>,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct GroupInfo {
|
||||
pub group: PermissionGroup,
|
||||
pub description: &'static str,
|
||||
pub permissions: Vec<PermissionInfo>,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct PermissionInfo {
|
||||
pub enum_name: Permission,
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
use common_enums::{PermissionGroup, RoleScope};
|
||||
|
||||
use super::Permission;
|
||||
|
||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
||||
pub struct CreateRoleRequest {
|
||||
pub role_name: String,
|
||||
@ -16,10 +18,30 @@ pub struct UpdateRoleRequest {
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct ListRolesResponse(pub Vec<RoleInfoResponse>);
|
||||
|
||||
#[derive(Debug, serde::Deserialize)]
|
||||
pub struct GetGroupsQueryParam {
|
||||
pub groups: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct RoleInfoResponse {
|
||||
#[serde(untagged)]
|
||||
pub enum RoleInfoResponse {
|
||||
Permissions(RoleInfoWithPermissionsResponse),
|
||||
Groups(RoleInfoWithGroupsResponse),
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct RoleInfoWithPermissionsResponse {
|
||||
pub role_id: String,
|
||||
pub permissions: Vec<super::Permission>,
|
||||
pub permissions: Vec<Permission>,
|
||||
pub role_name: String,
|
||||
pub role_scope: RoleScope,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize)]
|
||||
pub struct RoleInfoWithGroupsResponse {
|
||||
pub role_id: String,
|
||||
pub groups: Vec<PermissionGroup>,
|
||||
pub role_name: String,
|
||||
pub role_scope: RoleScope,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user