mirror of
https://github.com/dani-garcia/vaultwarden.git
synced 2025-09-11 03:05:58 +03:00
Update admin page to work with new invitation flow
This commit is contained in:
@@ -4,6 +4,8 @@ use serde_json::Value;
|
||||
use crate::api::{JsonResult, JsonUpcase};
|
||||
use crate::CONFIG;
|
||||
|
||||
use crate::auth::{encode_jwt, generate_invite_claims};
|
||||
use crate::mail;
|
||||
use crate::db::models::*;
|
||||
use crate::db::DbConn;
|
||||
|
||||
@@ -31,7 +33,7 @@ fn get_users(_token: AdminToken, conn: DbConn) -> JsonResult {
|
||||
#[post("/invite", data = "<data>")]
|
||||
fn invite_user(data: JsonUpcase<InviteData>, _token: AdminToken, conn: DbConn) -> JsonResult {
|
||||
let data: InviteData = data.into_inner().data;
|
||||
|
||||
let email = data.Email.clone();
|
||||
if User::find_by_mail(&data.Email, &conn).is_some() {
|
||||
err!("User already exists")
|
||||
}
|
||||
@@ -43,7 +45,21 @@ fn invite_user(data: JsonUpcase<InviteData>, _token: AdminToken, conn: DbConn) -
|
||||
let mut invitation = Invitation::new(data.Email);
|
||||
invitation.save(&conn)?;
|
||||
|
||||
// TODO: Might want to send an email?
|
||||
if let Some(ref mail_config) = CONFIG.mail {
|
||||
let mut user = User::new(email);
|
||||
user.save(&conn)?;
|
||||
let org_id = String::from("00000000-0000-0000-0000-000000000000");
|
||||
let claims = generate_invite_claims(
|
||||
user.uuid.to_string(),
|
||||
user.email.clone(),
|
||||
org_id.clone(),
|
||||
None,
|
||||
None,
|
||||
);
|
||||
let org_name = "bitwarden_rs";
|
||||
let invite_token = encode_jwt(&claims);
|
||||
mail::send_invite(&user.email, &org_id, &user.uuid, &invite_token, &org_name, mail_config)?;
|
||||
}
|
||||
|
||||
Ok(Json(json!({})))
|
||||
}
|
||||
|
Reference in New Issue
Block a user