Almost done with auth
TOOD: Shared library for ErrorCode (30m), Changing emails (1hr), Username formatting (30m), OAuth support (3hrs), Testing (infinite)
This commit is contained in:
@@ -8,7 +8,7 @@ use tarpc::server::{BaseChannel, Channel};
|
||||
use tarpc::server::incoming::Incoming;
|
||||
use tarpc::tokio_serde::formats::Json;
|
||||
use realm_auth::server::RealmAuthServer;
|
||||
use realm_auth::types::RealmAuth;
|
||||
use realm_auth::types::{AuthEmail, RealmAuth};
|
||||
|
||||
async fn spawn(fut: impl Future<Output = ()> + Send + 'static) {
|
||||
tokio::spawn(fut);
|
||||
@@ -18,20 +18,28 @@ async fn spawn(fut: impl Future<Output = ()> + Send + 'static) {
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
dotenv().ok();
|
||||
|
||||
let auth_email = AuthEmail {
|
||||
server_address: env::var("SERVER_MAIL_ADDRESS").expect("SERVER_MAIL_ADDRESS must be set"),
|
||||
server_port: env::var("SERVER_MAIL_PORT").expect("SERVER_MAIL_PORT must be set").parse::<u16>().expect("SERVER_MAIL_ADDRESS must be a number"),
|
||||
auth_name: env::var("SERVER_MAIL_NAME").expect("SERVER_MAIL_NAME must be set"),
|
||||
auth_from_address: env::var("SERVER_MAIL_FROM_ADDRESS").expect("SERVER_MAIL_FROM_ADDRESS must be set"),
|
||||
auth_username: env::var("SERVER_MAIL_USERNAME").expect("SERVER_MAIL_USERNAME must be set"),
|
||||
auth_password: env::var("SERVER_MAIL_PASSWORD").expect("SERVER_MAIL_PASSWORD must be set"),
|
||||
};
|
||||
|
||||
let db_pool = MySqlPoolOptions::new()
|
||||
.max_connections(64)
|
||||
.connect(env::var("DATABASE_URL").expect("DATABASE_URL must be set").as_str()).await?;
|
||||
|
||||
sqlx::query(
|
||||
"CREATE DATABASE IF NOT EXISTS realmauth; USE realmauth;"
|
||||
).fetch_one(&db_pool).await?;
|
||||
//TODO: In a docker container or figure out somewhere to do this command
|
||||
//sqlx::query("CREATE DATABASE IF NOT EXISTS realmauth").execute(&db_pool).await?;
|
||||
|
||||
sqlx::query(
|
||||
"CREATE TABLE IF NOT EXISTS user (
|
||||
id SERIAL,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(255) NOT NULL,
|
||||
avatar TEXT NOT NULL
|
||||
avatar TEXT NOT NULL,
|
||||
login_code INT(6),
|
||||
tokens TEXT,
|
||||
google_oauth VARCHAR(255),
|
||||
@@ -57,7 +65,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
// serve is generated by the service attribute. It takes as input any type implementing
|
||||
// the generated World trait.
|
||||
.map(|channel| {
|
||||
let server = RealmAuthServer::new(channel.transport().peer_addr().unwrap(), db_pool);
|
||||
let server = RealmAuthServer::new(channel.transport().peer_addr().unwrap(), db_pool.clone(), auth_email.clone());
|
||||
channel.execute(server.serve()).for_each(spawn)
|
||||
})
|
||||
// Max 10 channels.
|
||||
|
||||
Reference in New Issue
Block a user