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

@ -65,7 +65,7 @@ pub struct UpdateUserQuery {
}
pub async fn users_route(
user: CurrentUser,
admin: CurrentUser,
users: web::Data<Addr<UsersActor>>,
update_query: Option<web::Form<UpdateUserQuery>>,
logger: ActionLogger,
@ -225,7 +225,7 @@ pub async fn users_route(
HttpResponse::Ok().body(
UsersListTemplate {
_p: BaseSettingsPage::get("Users list", &user, danger, success),
_p: BaseSettingsPage::get("Users list", &admin, danger, success),
users,
}
.render()
@ -233,11 +233,22 @@ pub async fn users_route(
)
}
pub async fn create_user(user: CurrentUser, clients: web::Data<ClientManager>) -> impl Responder {
pub async fn create_user(admin: CurrentUser, clients: web::Data<ClientManager>) -> impl Responder {
let user = User {
authorized_clients: Some(
clients
.get_default_clients()
.iter()
.map(|u| u.id.clone())
.collect(),
),
..Default::default()
};
HttpResponse::Ok().body(
EditUserTemplate {
_p: BaseSettingsPage::get("Create a new user", user.deref(), None, None),
u: Default::default(),
_p: BaseSettingsPage::get("Create a new user", admin.deref(), None, None),
u: user,
clients: clients.cloned(),
}
.render()
@ -251,7 +262,7 @@ pub struct EditUserQuery {
}
pub async fn edit_user(
user: CurrentUser,
admin: CurrentUser,
clients: web::Data<ClientManager>,
users: web::Data<Addr<UsersActor>>,
query: web::Query<EditUserQuery>,
@ -266,7 +277,7 @@ pub async fn edit_user(
EditUserTemplate {
_p: BaseSettingsPage::get(
"Edit user account",
user.deref(),
admin.deref(),
match edited_account.is_none() {
true => Some("Could not find requested user!".to_string()),
false => None,

View File

@ -164,7 +164,7 @@ pub async fn authorize(
};
// Check if user is authorized to access the application
if !user.can_access_app(&client.id) {
if !user.can_access_app(&client) {
return error_redirect(
&query,
"invalid_request",