Skip to content

Commit ecda613

Browse files
Fix API key issues (#20)
1 parent 85a45ad commit ecda613

File tree

4 files changed

+21
-60
lines changed

4 files changed

+21
-60
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "propelauth"
3-
version = "0.5.0"
3+
version = "0.6.0"
44
authors = ["support@propelauth.com"]
55
description = "A Rust crate for managing authentication and authorization with support for multi-tenant / B2B products, powered by PropelAuth"
66
keywords = ["authentication", "auth", "authorization", "b2b", "tenant"]

src/models/user_in_org.rs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,21 @@
1111

1212

1313

14+
use std::collections::HashMap;
15+
use serde_json::Value;
16+
1417
#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
1518
pub struct UserInOrg {
1619
#[serde(rename = "org_id")]
1720
pub org_id: String,
1821
#[serde(rename = "org_name")]
1922
pub org_name: String,
23+
#[serde(rename = "org_metadata")]
24+
pub org_metadata: HashMap<String, Value>,
2025
#[serde(rename = "user_role")]
2126
pub user_role: String,
2227
#[serde(rename = "inherited_user_roles_plus_current_role")]
2328
pub inherited_user_roles_plus_current_role: Vec<String>,
2429
#[serde(rename = "user_permissions")]
2530
pub user_permissions: Vec<String>,
2631
}
27-
28-
impl UserInOrg {
29-
pub fn new(org_id: String, org_name: String, user_role: String, inherited_user_roles_plus_current_role: Vec<String>, user_permissions: Vec<String>) -> UserInOrg {
30-
UserInOrg {
31-
org_id,
32-
org_name,
33-
user_role,
34-
inherited_user_roles_plus_current_role,
35-
user_permissions,
36-
}
37-
}
38-
}
39-
40-
Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,42 @@
11
use std::collections::HashMap;
22
use serde_json::Value;
33
use uuid::Uuid;
4-
use crate::models::UserMetadata;
4+
use crate::models::{UserInOrg, UserMetadata};
55

66
pub type OrgRole = String;
77

88
#[derive(Clone, Debug, PartialEq, Deserialize)]
99
pub struct ValidateApiKeyResponse {
1010
pub metadata: Option<serde_json::Value>,
11-
pub user_metadata: Option<UserMetadata>,
12-
pub org_metadata: Option<OrgInternalMetadata>,
13-
pub user_role_in_org: Option<OrgRole>,
11+
pub user: Option<UserMetadata>,
12+
pub org: Option<OrgMetadata>,
13+
pub user_in_org: Option<UserInOrg>,
1414
pub user_id: Option<String>,
1515
pub org_id: Option<String>,
1616
}
1717

18-
impl ValidateApiKeyResponse {
19-
pub fn new(metadata: Option<serde_json::Value>, user_metadata: Option<UserMetadata>, org_metadata: Option<OrgInternalMetadata>, user_role_in_org: Option<OrgRole>, user_id: Option<String>, org_id: Option<String>) -> Self {
20-
Self { metadata, user_metadata, org_metadata, user_role_in_org, user_id, org_id }
21-
}
22-
}
23-
2418
#[derive(Clone, Debug, PartialEq, Deserialize)]
2519
pub struct ValidatePersonalApiKeyResponse {
2620
pub metadata: Option<serde_json::Value>,
27-
pub user_metadata: UserMetadata,
21+
pub user: UserMetadata,
2822
}
2923

3024
#[derive(Clone, Debug, PartialEq, Deserialize)]
3125
pub struct ValidateOrgApiKeyResponse {
3226
pub metadata: Option<serde_json::Value>,
33-
pub user_metadata: Option<UserMetadata>,
34-
pub org_metadata: OrgInternalMetadata,
35-
pub user_role_in_org: Option<OrgRole>,
27+
pub user: Option<UserMetadata>,
28+
pub org: OrgMetadata,
29+
pub user_in_org: Option<UserInOrg>,
3630
}
3731

3832
#[derive(Clone, Debug, PartialEq, Deserialize)]
39-
pub struct OrgInternalMetadata {
33+
pub struct OrgMetadata {
4034
pub org_id: Uuid,
4135
pub org_name: String,
42-
pub org_definition: OrgDefinition,
4336
pub can_setup_saml: bool,
44-
pub autojoin_by_domain: bool,
45-
pub restrict_to_domain: bool,
46-
pub domain: Option<String>,
47-
//pub require_2fa_by: Option<chrono::DateTime<chrono::Utc>>,
4837
pub max_users: Option<i32>,
4938
pub metadata: MetadataHashOfValue,
5039
}
5140

52-
#[derive(Clone, Debug, PartialEq, Deserialize)]
53-
pub struct OrgDefinition {
54-
pub roles: Vec<OrgRoleDefinition>,
55-
pub default_role: Option<String>,
56-
}
57-
58-
#[derive(Clone, Debug, PartialEq, Deserialize)]
59-
pub struct OrgRoleDefinition {
60-
pub name: String,
61-
pub description: Option<String>,
62-
pub can_invite: bool,
63-
pub can_change_roles: bool,
64-
pub can_remove_users: bool,
65-
pub can_setup_saml: Option<bool>,
66-
pub external_permissions: Vec<String>,
67-
pub deprecated: bool,
68-
pub is_visible_to_end_user: bool,
69-
}
70-
7141
pub type MetadataHashOfValue = HashMap<String, Value>;
7242

src/propelauth/api_key.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,27 +139,27 @@ impl ApiKeyService<'_> {
139139

140140
pub async fn validate_personal_api_key(&self, params: ValidateApiKeyParams) -> Result<ValidatePersonalApiKeyResponse, ApiKeyError> {
141141
let resp = self.validate_api_key(params).await?;
142-
if resp.user_metadata.is_none() || resp.org_metadata.is_some() {
142+
if resp.user.is_none() || resp.org.is_some() {
143143
return Err(ApiKeyError::InvalidPersonalAPIKey);
144144
}
145145

146146
Ok(ValidatePersonalApiKeyResponse {
147147
metadata: resp.metadata,
148-
user_metadata: resp.user_metadata.unwrap(),
148+
user: resp.user.unwrap(),
149149
})
150150
}
151151

152152
pub async fn validate_org_api_key(&self, params: ValidateApiKeyParams) -> Result<ValidateOrgApiKeyResponse, ApiKeyError> {
153153
let resp = self.validate_api_key(params).await?;
154-
if resp.org_metadata.is_none() {
154+
if resp.org.is_none() {
155155
return Err(ApiKeyError::InvalidOrgAPIKey);
156156
}
157157

158158
Ok(ValidateOrgApiKeyResponse {
159159
metadata: resp.metadata,
160-
user_metadata: resp.user_metadata,
161-
org_metadata: resp.org_metadata.unwrap(),
162-
user_role_in_org: resp.user_role_in_org,
160+
user: resp.user,
161+
org: resp.org.unwrap(),
162+
user_in_org: resp.user_in_org,
163163
})
164164
}
165165
}

0 commit comments

Comments
 (0)