Add some configuration options for instance admins

This commit is contained in:
Bat
2018-07-27 19:05:36 +02:00
parent 826772ca20
commit 74ec59e77c
21 changed files with 200 additions and 9 deletions
+2
View File
@@ -50,6 +50,8 @@ fn main() {
routes::instance::paginated_index,
routes::instance::index,
routes::instance::admin,
routes::instance::update_settings,
routes::instance::shared_inbox,
routes::instance::nodeinfo,
+45
View File
@@ -1,8 +1,11 @@
use gettextrs::gettext;
use rocket::{request::LenientForm, response::Redirect};
use rocket_contrib::{Json, Template};
use serde_json;
use validator::{Validate};
use plume_models::{
admin::Admin,
comments::Comment,
db_conn::DbConn,
posts::Post,
@@ -39,6 +42,48 @@ fn index(conn: DbConn, user: Option<User>) -> Template {
paginated_index(conn, user, Page::first())
}
#[get("/admin")]
fn admin(conn: DbConn, admin: Admin) -> Template {
Template::render("instance/admin", json!({
"account": admin.0,
"instance": Instance::get_local(&*conn),
"errors": null,
"form": null
}))
}
#[derive(FromForm, Validate, Serialize)]
struct InstanceSettingsForm {
#[validate(length(min = "1"))]
name: String,
open_registrations: bool,
short_description: String,
long_description: String,
#[validate(length(min = "1"))]
default_license: String
}
#[post("/admin", data = "<form>")]
fn update_settings(conn: DbConn, admin: Admin, form: LenientForm<InstanceSettingsForm>) -> Result<Redirect, Template> {
let form = form.get();
form.validate()
.map(|_| {
let instance = Instance::get_local(&*conn).unwrap();
instance.update(&*conn,
form.name.clone(),
form.open_registrations,
form.short_description.clone(),
form.long_description.clone());
Redirect::to(uri!(admin))
})
.map_err(|e| Template::render("instance/admin", json!({
"account": admin.0,
"instance": Instance::get_local(&*conn),
"errors": e.inner(),
"form": form
})))
}
#[post("/inbox", data = "<data>")]
fn shared_inbox(conn: DbConn, data: String) -> String {
let act: serde_json::Value = serde_json::from_str(&data[..]).unwrap();
+5 -1
View File
@@ -151,7 +151,11 @@ fn quick_setup(conn: DbConn) {
let instance = Instance::insert(&*conn, NewInstance {
public_domain: domain,
name: name,
local: true
local: true,
long_description: String::new(),
short_description: String::new(),
default_license: String::from("CC-0"),
open_registrations: true
});
println!("{}\n", " ✔️ Your instance was succesfully created!".green());