replace username by email
This commit is contained in:
parent
515cc06dec
commit
473daa532a
6 changed files with 11 additions and 15 deletions
|
@ -1,7 +1,7 @@
|
|||
-- Your SQL goes here
|
||||
CREATE TABLE localuser (
|
||||
`user_id` VARCHAR NOT NULL PRIMARY KEY,
|
||||
`username` VARCHAR NOT NULL UNIQUE,
|
||||
`email` VARCHAR NOT NULL UNIQUE,
|
||||
`password` VARCHAR NOT NULL,
|
||||
`role` TEXT CHECK(role IN ('admin', 'zoneadmin')) NOT NULL, -- note: migrate to postgres so enum are actually a thing
|
||||
FOREIGN KEY(user_id) REFERENCES user(id)
|
||||
|
|
|
@ -17,8 +17,6 @@ pub enum UserCommand {
|
|||
|
||||
#[derive(Parser)]
|
||||
pub struct AddUserCommand {
|
||||
#[clap(long = "--name", short = 'n')]
|
||||
pub name: String,
|
||||
#[clap(long = "--email", short = 'e')]
|
||||
pub email: String,
|
||||
#[clap(long = "--is-admin", short = 'a')]
|
||||
|
@ -39,7 +37,6 @@ impl NomiloCommand for UserCommand {
|
|||
impl NomiloCommand for AddUserCommand {
|
||||
fn run(self, figment: Figment, _app_config: Config) {
|
||||
let res = LocalUser::create_user(&get_db_conn(&figment), CreateUserRequest {
|
||||
username: self.name,
|
||||
email: self.email,
|
||||
role: Some(if self.is_admin { Role::Admin } else { Role::ZoneAdmin }),
|
||||
password: self.password.unwrap(),
|
||||
|
|
|
@ -17,7 +17,7 @@ pub async fn do_login(
|
|||
let session = conn.run(move |c| {
|
||||
let user_info = models::LocalUser::get_user_by_creds(
|
||||
c,
|
||||
&auth_request.username,
|
||||
&auth_request.email,
|
||||
&auth_request.password
|
||||
)?;
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ pub const COOKIE_NAME: &str = "session_id";
|
|||
|
||||
#[derive(Debug, Deserialize, FromForm)]
|
||||
pub struct AuthTokenRequest {
|
||||
pub username: String,
|
||||
pub email: String,
|
||||
pub password: String,
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ pub struct User {
|
|||
#[primary_key(user_id)]
|
||||
pub struct LocalUser {
|
||||
pub user_id: String,
|
||||
pub username: String,
|
||||
pub email: String,
|
||||
pub password: String,
|
||||
pub role: Role,
|
||||
}
|
||||
|
@ -55,7 +55,6 @@ pub struct UserZone {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct CreateUserRequest {
|
||||
pub username: String,
|
||||
pub password: String,
|
||||
pub email: String,
|
||||
pub role: Option<Role>
|
||||
|
@ -159,7 +158,7 @@ impl LocalUser {
|
|||
|
||||
let new_localuser = LocalUser {
|
||||
user_id: new_user_id,
|
||||
username: user_request.username.clone(),
|
||||
email: user_request.email.clone(),
|
||||
password: LocalUser::hash_password(&user_request.password),
|
||||
role: if let Some(user_role) = user_request.role { user_role } else { Role::ZoneAdmin },
|
||||
};
|
||||
|
@ -167,7 +166,7 @@ impl LocalUser {
|
|||
let res = UserInfo {
|
||||
id: new_user.id.clone(),
|
||||
role: new_localuser.role.clone(),
|
||||
username: new_localuser.username.clone(),
|
||||
username: new_localuser.email.clone(),
|
||||
};
|
||||
|
||||
conn.immediate_transaction(|| -> diesel::QueryResult<()> {
|
||||
|
@ -190,7 +189,7 @@ impl LocalUser {
|
|||
|
||||
pub fn get_user_by_creds(
|
||||
conn: &diesel::SqliteConnection,
|
||||
request_username: &str,
|
||||
request_email: &str,
|
||||
request_password: &str
|
||||
) -> Result<UserInfo, UserError> {
|
||||
|
||||
|
@ -198,7 +197,7 @@ impl LocalUser {
|
|||
use crate::schema::user::dsl::*;
|
||||
|
||||
let (client_user, client_localuser): (User, LocalUser) = user.inner_join(localuser)
|
||||
.filter(username.eq(request_username))
|
||||
.filter(email.eq(request_email))
|
||||
.get_result(conn)
|
||||
.map_err(|e| match e {
|
||||
DieselError::NotFound => UserError::BadCreds,
|
||||
|
@ -212,7 +211,7 @@ impl LocalUser {
|
|||
Ok(UserInfo {
|
||||
id: client_user.id,
|
||||
role: client_localuser.role,
|
||||
username: client_localuser.username,
|
||||
username: client_localuser.email,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -231,7 +230,7 @@ impl LocalUser {
|
|||
Ok(UserInfo {
|
||||
id: client_user.id,
|
||||
role: client_localuser.role,
|
||||
username: client_localuser.username,
|
||||
username: client_localuser.email,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ table! {
|
|||
|
||||
localuser (user_id) {
|
||||
user_id -> Text,
|
||||
username -> Text,
|
||||
email -> Text,
|
||||
password -> Text,
|
||||
role -> RoleMapping,
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue