Add default clients (#105)
All checks were successful
continuous-integration/drone/push Build is passing

* Add the possibility to create client enabled by default when creating new accounts
* Can mark clients are granted for all users, regardless of users accounts grants

Reviewed-on: #105
This commit is contained in:
2023-04-15 10:19:15 +00:00
parent f1ac19cca1
commit 6d2e52d632
10 changed files with 493 additions and 328 deletions

View File

@@ -6,11 +6,28 @@ pub struct ClientID(pub String);
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Client {
/// The ID of the client
pub id: ClientID,
/// The human-readable name of the client
pub name: String,
/// A short description of the service provided by the client
pub description: String,
/// The secret used by the client to retrieve authenticated users information
pub secret: String,
/// The URI where the users should be redirected once authenticated
pub redirect_uri: String,
/// 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 {
@@ -33,6 +50,13 @@ impl EntityManager<Client> {
None
}
/// Get the list of default clients.
///
/// i.e. the clients that are granted to new accounts by default
pub fn get_default_clients(&self) -> Vec<&Client> {
self.iter().filter(|u| u.default).collect()
}
pub fn apply_environment_variables(&mut self) {
for c in self.iter_mut() {
c.id = ClientID(apply_env_vars(&c.id.0));