feat: add setting modification form in panel
This commit is contained in:
parent
bb57e57f01
commit
64cf647f4a
@ -45,7 +45,8 @@ fn main() {
|
|||||||
admin::article_edit,
|
admin::article_edit,
|
||||||
admin::save_article,
|
admin::save_article,
|
||||||
admin::article_creation,
|
admin::article_creation,
|
||||||
admin::change_password
|
admin::change_password,
|
||||||
|
admin::change_setting
|
||||||
])
|
])
|
||||||
.attach(Template::fairing())
|
.attach(Template::fairing())
|
||||||
.launch();
|
.launch();
|
||||||
|
@ -10,6 +10,7 @@ use request::ArticleEditForm;
|
|||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
use schema::users;
|
use schema::users;
|
||||||
use rocket::request::FlashMessage;
|
use rocket::request::FlashMessage;
|
||||||
|
use schema::setting;
|
||||||
|
|
||||||
#[derive(Queryable, Debug, Serialize, Insertable, AsChangeset)]
|
#[derive(Queryable, Debug, Serialize, Insertable, AsChangeset)]
|
||||||
pub struct Article {
|
pub struct Article {
|
||||||
@ -103,12 +104,15 @@ impl User {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Queryable, Debug, Serialize)]
|
#[derive_FromForm]
|
||||||
|
#[derive(Queryable, Debug, Serialize, Insertable, AsChangeset)]
|
||||||
|
#[table_name = "setting"]
|
||||||
pub struct Setting {
|
pub struct Setting {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub value: Option<String>,
|
pub value: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
pub struct SerializeFlashMessage <'a> {
|
pub struct SerializeFlashMessage <'a> {
|
||||||
pub name: &'a str,
|
pub name: &'a str,
|
||||||
|
@ -20,7 +20,7 @@ use chrono::Utc;
|
|||||||
use request::NewPasswordForm;
|
use request::NewPasswordForm;
|
||||||
use rocket::request::FlashMessage;
|
use rocket::request::FlashMessage;
|
||||||
use models::SerializeFlashMessage;
|
use models::SerializeFlashMessage;
|
||||||
|
use models::Setting;
|
||||||
|
|
||||||
#[get("/login")]
|
#[get("/login")]
|
||||||
fn admin_login() -> Template {
|
fn admin_login() -> Template {
|
||||||
@ -122,4 +122,13 @@ fn change_password(admin: Admin, conn: DbConn, password_form: Form<NewPasswordFo
|
|||||||
admin_user.password = User::password_generate(&password_form.get().password).to_string();
|
admin_user.password = User::password_generate(&password_form.get().password).to_string();
|
||||||
let _result: QueryResult<User> = diesel::update(users::table.find(admin_user.id)).set(&admin_user).get_result(&*conn);
|
let _result: QueryResult<User> = diesel::update(users::table.find(admin_user.id)).set(&admin_user).get_result(&*conn);
|
||||||
Flash::new(Redirect::moved("/admin"), "success", "password is changed successfully")
|
Flash::new(Redirect::moved("/admin"), "success", "password is changed successfully")
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/setting", data = "<setting_form>")]
|
||||||
|
fn change_setting(admin: Admin, conn: DbConn, setting_form: Form<Setting>) -> Flash<Redirect> {
|
||||||
|
use schema::{setting, setting::dsl::*};
|
||||||
|
|
||||||
|
let new_setting = Setting { name: setting_form.get().name.clone(), value: setting_form.get().value.clone() };
|
||||||
|
let fetched_setting: QueryResult<Setting> = diesel::update(setting::table.find(&setting_form.get().name)).set(&new_setting).get_result(&*conn);
|
||||||
|
Flash::new(Redirect::to("/admin"), "success", "setting changed")
|
||||||
}
|
}
|
@ -23,5 +23,14 @@
|
|||||||
|
|
||||||
<input type="password" name="password" placeholder="new password" required>
|
<input type="password" name="password" placeholder="new password" required>
|
||||||
|
|
||||||
|
<button>change</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<h2>Change setting</h2>
|
||||||
|
|
||||||
|
<form action="/admin/setting" method="post">
|
||||||
|
|
||||||
|
<input type="text" name="name" placeholder="setting name" required>
|
||||||
|
<input type="text" name="value" placeholder="value" required>
|
||||||
<button>change</button>
|
<button>change</button>
|
||||||
</form>
|
</form>
|
Loading…
Reference in New Issue
Block a user