feat: change setting
This commit is contained in:
parent
c7be84d987
commit
23298d586a
@ -81,7 +81,8 @@ fn main() -> std::io::Result<()> {
|
||||
.service(routers::admin::article_save)
|
||||
.service(routers::admin::article_edit)
|
||||
.service(routers::admin::article_deletion)
|
||||
.service(routers::admin::change_password),
|
||||
.service(routers::admin::change_password)
|
||||
.service(routers::admin::change_setting),
|
||||
)
|
||||
.service(routers::rss::rss_page)
|
||||
.service(routers::article::get_article_by_url)
|
||||
|
@ -4,10 +4,10 @@ use diesel::pg::PgConnection;
|
||||
use diesel::prelude::*;
|
||||
use diesel::result::Error;
|
||||
use diesel::{AsChangeset, Insertable, Queryable};
|
||||
use serde::Serialize;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Queryable, Debug, Serialize, Insertable, AsChangeset)]
|
||||
#[derive(Queryable, Debug, Serialize, Deserialize, Insertable, AsChangeset)]
|
||||
#[table_name = "setting"]
|
||||
pub struct Setting {
|
||||
pub name: String,
|
||||
|
@ -225,12 +225,22 @@ pub fn change_password(
|
||||
id.forget();
|
||||
RubbleResponder::Redirect("/admin/panel".into())
|
||||
}
|
||||
//
|
||||
//#[post("/setting", data = "<setting_form>")]
|
||||
//pub fn change_setting(_admin: Admin, conn: DbConn, setting_form: Form<Setting>) -> Flash<Redirect> {
|
||||
// use crate::schema::{setting};
|
||||
//
|
||||
// let new_setting = Setting { name: setting_form.name.clone(), value: setting_form.value.clone() };
|
||||
// let _fetched_setting: QueryResult<Setting> = diesel::update(setting::table.find(&setting_form.name)).set(&new_setting).get_result(&*conn);
|
||||
// Flash::new(Redirect::to("/admin"), "success", "setting changed")
|
||||
//}
|
||||
|
||||
#[post("/setting")]
|
||||
pub fn change_setting(
|
||||
id: Identity,
|
||||
setting: web::Form<Setting>,
|
||||
conn: web::Data<Pool>,
|
||||
) -> impl Responder {
|
||||
if id.identity().is_none() {
|
||||
return RubbleResponder::Redirect("/admin/login".into());
|
||||
}
|
||||
let connection = conn.get().unwrap();
|
||||
|
||||
let mut admin = User::find_by_username(&*connection, &id.identity().unwrap())
|
||||
.expect("cannot found this user");
|
||||
|
||||
Setting::update(&connection, setting.name.clone(), &setting);
|
||||
|
||||
RubbleResponder::Redirect("/admin/panel".into())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user