Can grant a client to all users
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2023-04-15 10:39:22 +02:00
parent 412eaf2bff
commit d27c542e1f
6 changed files with 31 additions and 15 deletions

View File

@ -24,6 +24,10 @@ pub struct Client {
/// Specify if the client must be allowed by default for new account
#[serde(default = "bool::default")]
pub default: bool,
/// Specify whether a client is granted to all users
#[serde(default = "bool::default")]
pub granted_to_all_users: bool,
}
impl PartialEq for Client {

View File

@ -2,7 +2,7 @@ use std::collections::HashMap;
use std::net::IpAddr;
use crate::constants::SECOND_FACTOR_EXEMPTION_AFTER_SUCCESSFUL_LOGIN;
use crate::data::client::ClientID;
use crate::data::client::{Client, ClientID};
use crate::data::login_redirect::LoginRedirect;
use crate::data::totp_key::TotpKey;
use crate::data::webauthn_manager::WebauthnPubKey;
@ -170,10 +170,14 @@ impl User {
}
}
pub fn can_access_app(&self, id: &ClientID) -> bool {
pub fn can_access_app(&self, client: &Client) -> bool {
if client.granted_to_all_users {
return true;
}
match self.granted_clients() {
GrantedClients::AllClients => true,
GrantedClients::SomeClients(c) => c.contains(id),
GrantedClients::SomeClients(c) => c.contains(&client.id),
GrantedClients::NoClient => false,
}
}