feat: add create retrieve and update api endpoints for organization resource (#5361)

This commit is contained in:
Hrithikesh
2024-07-24 12:10:37 +05:30
committed by GitHub
parent 192203d3a9
commit 26b878308f
44 changed files with 739 additions and 180 deletions

View File

@ -2,7 +2,9 @@ use std::{collections::HashMap, sync::Arc};
use api_models::user as user_api;
use common_enums::UserAuthType;
use common_utils::{encryption::Encryption, errors::CustomResult, types::keymanager::Identifier};
use common_utils::{
encryption::Encryption, errors::CustomResult, id_type, types::keymanager::Identifier,
};
use diesel_models::{enums::UserStatus, user_role::UserRole};
use error_stack::ResultExt;
use masking::{ExposeInterface, Secret};
@ -99,7 +101,7 @@ pub async fn generate_jwt_auth_token_with_custom_role_attributes(
state: &SessionState,
user: &UserFromStorage,
merchant_id: String,
org_id: String,
org_id: id_type::OrganizationId,
role_id: String,
) -> UserResult<Secret<String>> {
let token = AuthToken::new_token(

View File

@ -4,6 +4,7 @@ use actix_web::http::header::HeaderMap;
use api_models::user::dashboard_metadata::{
GetMetaDataRequest, GetMultipleMetaDataPayload, ProdIntent, SetMetaDataRequest,
};
use common_utils::id_type;
use diesel_models::{
enums::DashboardMetadata as DBEnum,
user::dashboard_metadata::{DashboardMetadata, DashboardMetadataNew, DashboardMetadataUpdate},
@ -20,7 +21,7 @@ pub async fn insert_merchant_scoped_metadata_to_db(
state: &SessionState,
user_id: String,
merchant_id: String,
org_id: String,
org_id: id_type::OrganizationId,
metadata_key: DBEnum,
metadata_value: impl serde::Serialize,
) -> UserResult<DashboardMetadata> {
@ -53,7 +54,7 @@ pub async fn insert_user_scoped_metadata_to_db(
state: &SessionState,
user_id: String,
merchant_id: String,
org_id: String,
org_id: id_type::OrganizationId,
metadata_key: DBEnum,
metadata_value: impl serde::Serialize,
) -> UserResult<DashboardMetadata> {
@ -86,7 +87,7 @@ pub async fn insert_user_scoped_metadata_to_db(
pub async fn get_merchant_scoped_metadata_from_db(
state: &SessionState,
merchant_id: String,
org_id: String,
org_id: id_type::OrganizationId,
metadata_keys: Vec<DBEnum>,
) -> UserResult<Vec<DashboardMetadata>> {
state
@ -100,7 +101,7 @@ pub async fn get_user_scoped_metadata_from_db(
state: &SessionState,
user_id: String,
merchant_id: String,
org_id: String,
org_id: id_type::OrganizationId,
metadata_keys: Vec<DBEnum>,
) -> UserResult<Vec<DashboardMetadata>> {
match state
@ -124,7 +125,7 @@ pub async fn update_merchant_scoped_metadata(
state: &SessionState,
user_id: String,
merchant_id: String,
org_id: String,
org_id: id_type::OrganizationId,
metadata_key: DBEnum,
metadata_value: impl serde::Serialize,
) -> UserResult<DashboardMetadata> {
@ -152,7 +153,7 @@ pub async fn update_user_scoped_metadata(
state: &SessionState,
user_id: String,
merchant_id: String,
org_id: String,
org_id: id_type::OrganizationId,
metadata_key: DBEnum,
metadata_value: impl serde::Serialize,
) -> UserResult<DashboardMetadata> {

View File

@ -2,6 +2,7 @@ use std::collections::HashSet;
use api_models::user_role as user_role_api;
use common_enums::PermissionGroup;
use common_utils::id_type;
use diesel_models::user_role::UserRole;
use error_stack::{report, ResultExt};
use router_env::logger;
@ -77,7 +78,7 @@ pub async fn validate_role_name(
state: &SessionState,
role_name: &domain::RoleName,
merchant_id: &str,
org_id: &str,
org_id: &id_type::OrganizationId,
) -> UserResult<()> {
let role_name_str = role_name.clone().get_role_name();
@ -109,7 +110,7 @@ pub async fn set_role_permissions_in_cache_by_user_role(
state,
user_role.role_id.as_str(),
user_role.merchant_id.as_str(),
user_role.org_id.as_str(),
&user_role.org_id,
)
.await
.map_err(|e| logger::error!("Error setting permissions in cache {:?}", e))
@ -120,7 +121,7 @@ pub async fn set_role_permissions_in_cache_if_required(
state: &SessionState,
role_id: &str,
merchant_id: &str,
org_id: &str,
org_id: &id_type::OrganizationId,
) -> UserResult<()> {
if roles::predefined_roles::PREDEFINED_ROLES.contains_key(role_id) {
return Ok(());