This commit is contained in:
Cadey Ratio 2020-10-27 12:21:28 -04:00
parent 5a0c531388
commit 198858de3e
2 changed files with 53 additions and 12 deletions

View File

@ -54,17 +54,49 @@ fn gitea_callback(
let tok = token.access_token().to_string(); let tok = token.access_token().to_string();
let refresh = token.refresh_token().unwrap().to_string(); let refresh = token.refresh_token().unwrap().to_string();
let gitea_user = gitea::user(tok.clone()).exepct("gitea api call to work"); let gitea_user = gitea::user(tok.clone()).expect("gitea api call to work");
use schema::users::dsl::{users, email}; use schema::{
let user: models::User = match users.filter(email.eq(gitea_user.email)).limit(1).load::<models::User>(&conn) { gitea_tokens,
Ok(u) => u, users::{
dsl::{email, users},
table as users_table,
},
};
let user: models::User = match users
.filter(email.eq(gitea_user.email.clone()))
.limit(1)
.load::<models::User>(&*conn)
{
Ok(u) => u[0].clone(),
Err(why) => { Err(why) => {
let u = models::User { let u = models::User {
id: uuid::Uuid::new_v4(),
salutation: gitea_user.full_name, salutation: gitea_user.full_name,
email: gitea_user.email, email: gitea_user.email,
is_admin: gitea_user.is_admin, is_admin: gitea_user.is_admin,
} is_locked: false,
tier: 0,
};
diesel::insert_into(users_table)
.values(&u)
.get_result(&*conn)
.expect("able to insert user");
let tok = models::GiteaToken {
id: uuid::Uuid::new_v4(),
user_id: u.id.clone(),
access_token: tok,
refresh_token: refresh,
};
diesel::insert_into(gitea_tokens::table)
.values(&tok)
.get_result(&*conn)
.expect("able to insert token");
u
} }
}; };

View File

@ -1,14 +1,23 @@
use serde::Serialize; use serde::Serialize;
use uuid::Uuid; use uuid::Uuid;
use crate::schema::users; use crate::schema::{gitea_tokens, users};
#[derive(Insertable, Queryable, Serialize, Debug, Clone)] #[derive(Insertable, Queryable, Serialize, Debug, Clone)]
#[table_name="users"] #[table_name="users"]
pub struct User { pub struct User {
id: Uuid, pub id: Uuid,
email: String, pub email: String,
salutation: String, pub salutation: String,
is_admin: bool, pub is_admin: bool,
is_locked: bool, pub is_locked: bool,
tier: i32, pub tier: i32,
}
#[derive(Insertable, Queryable, Debug, Clone)]
#[table_name="gitea_tokens"]
pub struct GiteaToken {
pub id: Uuid,
pub user_id: Uuid,
pub access_token: String,
pub refresh_token: String,
} }