Update admin page to work with new invitation flow

This commit is contained in:
Nick Fox
2019-01-04 10:32:51 -05:00
parent 736c0e62f2
commit cec28a85ac
4 changed files with 120 additions and 75 deletions

View File

@@ -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!({})))
}