Store try to register on Mastodon domain
Dependencies
- [2]
ZQIIC7C3Add field to store timestamp of joining game - [3]
BCMU6UYKStart login mastodon form - [4]
MUTHALNPDetect user and domain in Mastodon fediverse - [5]
FUCFD4UVAdd log in and log out support - [*]
IXY6NZLMStart to use migrations files for PostgreSQL database
Change contents
- replacement in src/pages/log_in.rs at line 8
use crate::{DataBaseRo, WebData};use crate::{DataBaseRo, DataBaseRw, WebData}; - edit in src/pages/log_in.rs at line 148
data_rw: web::Data<DataBaseRw>, - edit in src/pages/log_in.rs at line 202
let dbclient_rw = match data_rw.0.get().await {Ok(c) => c,Err(e) => {log::error!("Pool RW error {}", e);return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());}}; - replacement in src/pages/log_in.rs at line 211
// Try to register on Mastodonlet stmt = match dbclient_rw.prepare("INSERT INTO auth.mastodon_apps (domain, refresh_ts) VALUES ($1, $2)ON CONFLICT (domain) DO UPDATE SET refresh_ts = $2RETURNING client_id, client_secret;",).await{Ok(stmt) => stmt,Err(e) => {log::error!("Pool RW statement error {}", e);return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());}};let ts = chrono::Utc::now().naive_utc();let rows = match dbclient_rw.query_opt(&stmt, &[&domain, &ts]).await {Ok(rows) => rows,Err(e) => {log::error!("Pool RW query error {}", e);return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());}};let row = match rows {Some(row) => row,None => {log::error!("Pool RW query error");return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());}}; - edit in src/pages/log_in.rs at line 241
let opt_client_id = row.get::<_, Option<&str>>(0);let opt_client_secret = row.get::<_, Option<&str>>(1);// Try to register on Mastodon domain - file addition: 20230829_1_mastodon-apps-table.sql[7.15]
-- Create table to store client_id and client_secret for mastodon instancesCREATE TABLE IF NOT EXISTS auth.mastodon_apps (domain VARCHAR(100) NOT NULL,refresh_ts TIMESTAMP WITHOUT TIME ZONE NOT NULL,client_id VARCHAR(255) NULL,client_secret VARCHAR(255) NULL,CONSTRAINT pk_domain PRIMARY KEY (domain));GRANT SELECT, INSERT, UPDATE ON auth.mastodon_apps TO freeorion_test;