ezidam: setup: create "ezidam" app in database

This commit is contained in:
Philippe Loctaux 2023-03-15 22:01:01 +01:00
parent 71b083895d
commit 95173b1a09
2 changed files with 41 additions and 0 deletions

View file

@ -1,5 +1,7 @@
use super::Error;
// External crates
impl From<rocket::tokio::task::JoinError> for Error {
fn from(e: rocket::tokio::task::JoinError) -> Self {
Error::internal_server_error(e)
@ -12,6 +14,14 @@ impl From<rocket_db_pools::sqlx::Error> for Error {
}
}
impl From<url::ParseError> for Error {
fn from(e: url::ParseError) -> Self {
Error::internal_server_error(e)
}
}
// Local crates
impl From<hash::Error> for Error {
fn from(e: hash::Error) -> Self {
Error::internal_server_error(e)
@ -41,3 +51,9 @@ impl From<jwt::Error> for Error {
Error::internal_server_error(e)
}
}
impl From<apps::Error> for Error {
fn from(e: apps::Error) -> Self {
Error::internal_server_error(e)
}
}

View file

@ -1,6 +1,9 @@
use super::prelude::*;
use apps::App;
use hash::{Secret, SecretString};
use rocket::{get, post};
use settings::Settings;
use std::str::FromStr;
use url::Url;
use users::User;
@ -47,6 +50,17 @@ async fn create_first_account(
}
};
// Generate secret for ezidam app
let ezidam_secret = task::spawn_blocking(SecretString::default).await?;
// Hash secret for ezidam app
let ezidam_secret_hash = task::spawn_blocking(move || Secret::new(ezidam_secret)).await??;
// Create redirect uri for ezidam
let ezidam_redirect_uri = url.join("/oauth/redirect")?;
// Create app id for ezidam
let ezidam_app_id = AppID::from_str("ezidam").map_err(Error::internal_server_error)?;
// Generate UserID
let user_id = task::spawn_blocking(UserID::default).await?;
@ -56,6 +70,17 @@ async fn create_first_account(
let mut transaction = db.begin().await?;
// Insert ezidam app in database
App::insert(
&mut transaction,
&ezidam_app_id,
"Ezidam",
&ezidam_redirect_uri,
&ezidam_secret_hash,
true,
)
.await?;
// Insert user in database
User::insert(
&mut transaction,