Add some configuration options for instance admins
This commit is contained in:
@@ -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,
|
||||
|
||||
|
||||
@@ -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
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user