mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
refactor(permissions): Remove permissions field from permission info API response (#6376)
This commit is contained in:
@ -4,42 +4,6 @@ use masking::Secret;
|
|||||||
|
|
||||||
pub mod role;
|
pub mod role;
|
||||||
|
|
||||||
#[derive(Debug, serde::Serialize)]
|
|
||||||
pub enum Permission {
|
|
||||||
PaymentRead,
|
|
||||||
PaymentWrite,
|
|
||||||
RefundRead,
|
|
||||||
RefundWrite,
|
|
||||||
ApiKeyRead,
|
|
||||||
ApiKeyWrite,
|
|
||||||
MerchantAccountRead,
|
|
||||||
MerchantAccountWrite,
|
|
||||||
MerchantConnectorAccountRead,
|
|
||||||
MerchantConnectorAccountWrite,
|
|
||||||
RoutingRead,
|
|
||||||
RoutingWrite,
|
|
||||||
DisputeRead,
|
|
||||||
DisputeWrite,
|
|
||||||
MandateRead,
|
|
||||||
MandateWrite,
|
|
||||||
CustomerRead,
|
|
||||||
CustomerWrite,
|
|
||||||
Analytics,
|
|
||||||
ThreeDsDecisionManagerWrite,
|
|
||||||
ThreeDsDecisionManagerRead,
|
|
||||||
SurchargeDecisionManagerWrite,
|
|
||||||
SurchargeDecisionManagerRead,
|
|
||||||
UsersRead,
|
|
||||||
UsersWrite,
|
|
||||||
MerchantAccountCreate,
|
|
||||||
WebhookEventRead,
|
|
||||||
PayoutWrite,
|
|
||||||
PayoutRead,
|
|
||||||
WebhookEventWrite,
|
|
||||||
GenerateReport,
|
|
||||||
ReconAdmin,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, serde::Serialize, PartialEq, Eq, Hash)]
|
#[derive(Clone, Debug, serde::Serialize, PartialEq, Eq, Hash)]
|
||||||
pub enum ParentGroup {
|
pub enum ParentGroup {
|
||||||
Operations,
|
Operations,
|
||||||
@ -69,7 +33,6 @@ pub enum AuthorizationInfo {
|
|||||||
pub struct GroupInfo {
|
pub struct GroupInfo {
|
||||||
pub group: PermissionGroup,
|
pub group: PermissionGroup,
|
||||||
pub description: &'static str,
|
pub description: &'static str,
|
||||||
pub permissions: Vec<PermissionInfo>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Serialize, Clone)]
|
#[derive(Debug, serde::Serialize, Clone)]
|
||||||
@ -79,12 +42,6 @@ pub struct ParentInfo {
|
|||||||
pub groups: Vec<PermissionGroup>,
|
pub groups: Vec<PermissionGroup>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Serialize)]
|
|
||||||
pub struct PermissionInfo {
|
|
||||||
pub enum_name: Permission,
|
|
||||||
pub description: &'static str,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct UpdateUserRoleRequest {
|
pub struct UpdateUserRoleRequest {
|
||||||
pub email: pii::Email,
|
pub email: pii::Email,
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
use api_models::user_role::{GroupInfo, ParentGroup, PermissionInfo};
|
use api_models::user_role::{GroupInfo, ParentGroup};
|
||||||
use common_enums::PermissionGroup;
|
use common_enums::PermissionGroup;
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
|
|
||||||
use super::{permission_groups::get_permissions_vec, permissions::Permission};
|
|
||||||
|
|
||||||
// TODO: To be deprecated
|
// TODO: To be deprecated
|
||||||
pub fn get_group_authorization_info() -> Vec<GroupInfo> {
|
pub fn get_group_authorization_info() -> Vec<GroupInfo> {
|
||||||
PermissionGroup::iter()
|
PermissionGroup::iter()
|
||||||
@ -11,25 +9,10 @@ pub fn get_group_authorization_info() -> Vec<GroupInfo> {
|
|||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: To be deprecated
|
|
||||||
pub fn get_permission_info_from_permissions(permissions: &[Permission]) -> Vec<PermissionInfo> {
|
|
||||||
permissions
|
|
||||||
.iter()
|
|
||||||
.map(|&per| PermissionInfo {
|
|
||||||
description: Permission::get_permission_description(&per),
|
|
||||||
enum_name: per.into(),
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: To be deprecated
|
// TODO: To be deprecated
|
||||||
fn get_group_info_from_permission_group(group: PermissionGroup) -> GroupInfo {
|
fn get_group_info_from_permission_group(group: PermissionGroup) -> GroupInfo {
|
||||||
let description = get_group_description(group);
|
let description = get_group_description(group);
|
||||||
GroupInfo {
|
GroupInfo { group, description }
|
||||||
group,
|
|
||||||
description,
|
|
||||||
permissions: get_permission_info_from_permissions(get_permissions_vec(&group)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: To be deprecated
|
// TODO: To be deprecated
|
||||||
|
|||||||
@ -37,48 +37,3 @@ pub enum Permission {
|
|||||||
GenerateReport,
|
GenerateReport,
|
||||||
ReconAdmin,
|
ReconAdmin,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Permission {
|
|
||||||
pub fn get_permission_description(&self) -> &'static str {
|
|
||||||
match self {
|
|
||||||
Self::PaymentRead => "View all payments",
|
|
||||||
Self::PaymentWrite => "Create payment, download payments data",
|
|
||||||
Self::RefundRead => "View all refunds",
|
|
||||||
Self::RefundWrite => "Create refund, download refunds data",
|
|
||||||
Self::ApiKeyRead => "View API keys",
|
|
||||||
Self::ApiKeyWrite => "Create and update API keys",
|
|
||||||
Self::MerchantAccountRead => "View merchant account details",
|
|
||||||
Self::MerchantAccountWrite => {
|
|
||||||
"Update merchant account details, configure webhooks, manage api keys"
|
|
||||||
}
|
|
||||||
Self::MerchantConnectorAccountRead => "View connectors configured",
|
|
||||||
Self::MerchantConnectorAccountWrite => {
|
|
||||||
"Create, update, verify and delete connector configurations"
|
|
||||||
}
|
|
||||||
Self::RoutingRead => "View routing configuration",
|
|
||||||
Self::RoutingWrite => "Create and activate routing configurations",
|
|
||||||
Self::DisputeRead => "View disputes",
|
|
||||||
Self::DisputeWrite => "Create and update disputes",
|
|
||||||
Self::MandateRead => "View mandates",
|
|
||||||
Self::MandateWrite => "Create and update mandates",
|
|
||||||
Self::CustomerRead => "View customers",
|
|
||||||
Self::CustomerWrite => "Create, update and delete customers",
|
|
||||||
Self::Analytics => "Access to analytics module",
|
|
||||||
Self::ThreeDsDecisionManagerWrite => "Create and update 3DS decision rules",
|
|
||||||
Self::ThreeDsDecisionManagerRead => {
|
|
||||||
"View all 3DS decision rules configured for a merchant"
|
|
||||||
}
|
|
||||||
Self::SurchargeDecisionManagerWrite => "Create and update the surcharge decision rules",
|
|
||||||
Self::SurchargeDecisionManagerRead => "View all the surcharge decision rules",
|
|
||||||
Self::UsersRead => "View all the users for a merchant",
|
|
||||||
Self::UsersWrite => "Invite users, assign and update roles",
|
|
||||||
Self::MerchantAccountCreate => "Create merchant account",
|
|
||||||
Self::WebhookEventRead => "View webhook events",
|
|
||||||
Self::WebhookEventWrite => "Trigger retries for webhook events",
|
|
||||||
Self::PayoutRead => "View all payouts",
|
|
||||||
Self::PayoutWrite => "Create payout, download payout data",
|
|
||||||
Self::GenerateReport => "Generate reports for payments, refunds and disputes",
|
|
||||||
Self::ReconAdmin => "View and manage reconciliation reports",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
use std::{cmp, collections::HashSet};
|
use std::{cmp, collections::HashSet};
|
||||||
|
|
||||||
use api_models::user_role as user_role_api;
|
|
||||||
use common_enums::{EntityType, PermissionGroup};
|
use common_enums::{EntityType, PermissionGroup};
|
||||||
use common_utils::id_type;
|
use common_utils::id_type;
|
||||||
use diesel_models::{
|
use diesel_models::{
|
||||||
@ -16,49 +15,10 @@ use crate::{
|
|||||||
core::errors::{UserErrors, UserResult},
|
core::errors::{UserErrors, UserResult},
|
||||||
db::user_role::{ListUserRolesByOrgIdPayload, ListUserRolesByUserIdPayload},
|
db::user_role::{ListUserRolesByOrgIdPayload, ListUserRolesByUserIdPayload},
|
||||||
routes::SessionState,
|
routes::SessionState,
|
||||||
services::authorization::{self as authz, permissions::Permission, roles},
|
services::authorization::{self as authz, roles},
|
||||||
types::domain,
|
types::domain,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl From<Permission> for user_role_api::Permission {
|
|
||||||
fn from(value: Permission) -> Self {
|
|
||||||
match value {
|
|
||||||
Permission::PaymentRead => Self::PaymentRead,
|
|
||||||
Permission::PaymentWrite => Self::PaymentWrite,
|
|
||||||
Permission::RefundRead => Self::RefundRead,
|
|
||||||
Permission::RefundWrite => Self::RefundWrite,
|
|
||||||
Permission::ApiKeyRead => Self::ApiKeyRead,
|
|
||||||
Permission::ApiKeyWrite => Self::ApiKeyWrite,
|
|
||||||
Permission::MerchantAccountRead => Self::MerchantAccountRead,
|
|
||||||
Permission::MerchantAccountWrite => Self::MerchantAccountWrite,
|
|
||||||
Permission::MerchantConnectorAccountRead => Self::MerchantConnectorAccountRead,
|
|
||||||
Permission::MerchantConnectorAccountWrite => Self::MerchantConnectorAccountWrite,
|
|
||||||
Permission::RoutingRead => Self::RoutingRead,
|
|
||||||
Permission::RoutingWrite => Self::RoutingWrite,
|
|
||||||
Permission::DisputeRead => Self::DisputeRead,
|
|
||||||
Permission::DisputeWrite => Self::DisputeWrite,
|
|
||||||
Permission::MandateRead => Self::MandateRead,
|
|
||||||
Permission::MandateWrite => Self::MandateWrite,
|
|
||||||
Permission::CustomerRead => Self::CustomerRead,
|
|
||||||
Permission::CustomerWrite => Self::CustomerWrite,
|
|
||||||
Permission::Analytics => Self::Analytics,
|
|
||||||
Permission::ThreeDsDecisionManagerWrite => Self::ThreeDsDecisionManagerWrite,
|
|
||||||
Permission::ThreeDsDecisionManagerRead => Self::ThreeDsDecisionManagerRead,
|
|
||||||
Permission::SurchargeDecisionManagerWrite => Self::SurchargeDecisionManagerWrite,
|
|
||||||
Permission::SurchargeDecisionManagerRead => Self::SurchargeDecisionManagerRead,
|
|
||||||
Permission::UsersRead => Self::UsersRead,
|
|
||||||
Permission::UsersWrite => Self::UsersWrite,
|
|
||||||
Permission::MerchantAccountCreate => Self::MerchantAccountCreate,
|
|
||||||
Permission::WebhookEventRead => Self::WebhookEventRead,
|
|
||||||
Permission::WebhookEventWrite => Self::WebhookEventWrite,
|
|
||||||
Permission::PayoutRead => Self::PayoutRead,
|
|
||||||
Permission::PayoutWrite => Self::PayoutWrite,
|
|
||||||
Permission::GenerateReport => Self::GenerateReport,
|
|
||||||
Permission::ReconAdmin => Self::ReconAdmin,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn validate_role_groups(groups: &[PermissionGroup]) -> UserResult<()> {
|
pub fn validate_role_groups(groups: &[PermissionGroup]) -> UserResult<()> {
|
||||||
if groups.is_empty() {
|
if groups.is_empty() {
|
||||||
return Err(report!(UserErrors::InvalidRoleOperation))
|
return Err(report!(UserErrors::InvalidRoleOperation))
|
||||||
|
|||||||
Reference in New Issue
Block a user