start modifying /blogs/new to add custom_domain to the form

This commit is contained in:
Igor Galić 2019-07-30 23:57:17 +02:00 committed by Igor Galić
parent b172a80e35
commit 2dedcdbc53
No known key found for this signature in database
GPG Key ID: ACFEFF7F6A123A86
3 changed files with 23 additions and 0 deletions

View File

@ -530,6 +530,7 @@ impl NewBlog {
title: String, title: String,
summary: String, summary: String,
instance_id: i32, instance_id: i32,
custom_domain: Option<Host>,
) -> Result<NewBlog> { ) -> Result<NewBlog> {
let (pub_key, priv_key) = sign::gen_keypair(); let (pub_key, priv_key) = sign::gen_keypair();
Ok(NewBlog { Ok(NewBlog {
@ -539,6 +540,7 @@ impl NewBlog {
instance_id, instance_id,
public_key: String::from_utf8(pub_key).or(Err(Error::Signature))?, public_key: String::from_utf8(pub_key).or(Err(Error::Signature))?,
private_key: Some(String::from_utf8(priv_key).or(Err(Error::Signature))?), private_key: Some(String::from_utf8(priv_key).or(Err(Error::Signature))?),
custom_domain,
..NewBlog::default() ..NewBlog::default()
}) })
} }
@ -566,6 +568,7 @@ pub(crate) mod tests {
"Blog name".to_owned(), "Blog name".to_owned(),
"This is a small blog".to_owned(), "This is a small blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
None,
) )
.unwrap(), .unwrap(),
) )
@ -577,6 +580,7 @@ pub(crate) mod tests {
"My blog".to_owned(), "My blog".to_owned(),
"Welcome to my blog".to_owned(), "Welcome to my blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
Some(Host::new("blog.myname.me")),
) )
.unwrap(), .unwrap(),
) )
@ -588,6 +592,7 @@ pub(crate) mod tests {
"Why I like Plume".to_owned(), "Why I like Plume".to_owned(),
"In this blog I will explay you why I like Plume so much".to_owned(), "In this blog I will explay you why I like Plume so much".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
None,
) )
.unwrap(), .unwrap(),
) )
@ -648,6 +653,7 @@ pub(crate) mod tests {
"Some name".to_owned(), "Some name".to_owned(),
"This is some blog".to_owned(), "This is some blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
Some(Host::new("some.blog.com")),
) )
.unwrap(), .unwrap(),
) )
@ -676,6 +682,7 @@ pub(crate) mod tests {
"Some name".to_owned(), "Some name".to_owned(),
"This is some blog".to_owned(), "This is some blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
None,
) )
.unwrap(), .unwrap(),
) )
@ -687,6 +694,7 @@ pub(crate) mod tests {
"Blog".to_owned(), "Blog".to_owned(),
"I've named my blog Blog".to_owned(), "I've named my blog Blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
Some(Host::new("named.example.blog")),
) )
.unwrap(), .unwrap(),
) )
@ -779,6 +787,7 @@ pub(crate) mod tests {
"Some name".to_owned(), "Some name".to_owned(),
"This is some blog".to_owned(), "This is some blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
None,
) )
.unwrap(), .unwrap(),
) )
@ -803,6 +812,7 @@ pub(crate) mod tests {
"Some name".to_owned(), "Some name".to_owned(),
"This is some blog".to_owned(), "This is some blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
Some(Host::new("some.blog.com")),
) )
.unwrap(), .unwrap(),
) )
@ -841,6 +851,7 @@ pub(crate) mod tests {
"Some name".to_owned(), "Some name".to_owned(),
"This is some blog".to_owned(), "This is some blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
None,
) )
.unwrap(), .unwrap(),
) )
@ -852,6 +863,7 @@ pub(crate) mod tests {
"Blog".to_owned(), "Blog".to_owned(),
"I've named my blog Blog".to_owned(), "I've named my blog Blog".to_owned(),
Instance::get_local().unwrap().id, Instance::get_local().unwrap().id,
Some(Host::new("my.blog.com")),
) )
.unwrap(), .unwrap(),
) )

View File

@ -136,6 +136,7 @@ pub fn new_auth(i18n: I18n) -> Flash<Redirect> {
pub struct NewBlogForm { pub struct NewBlogForm {
#[validate(custom(function = "valid_slug", message = "Invalid name"))] #[validate(custom(function = "valid_slug", message = "Invalid name"))]
pub title: String, pub title: String,
pub custom_domain: String,
} }
fn valid_slug(title: &str) -> Result<(), ValidationError> { fn valid_slug(title: &str) -> Result<(), ValidationError> {
@ -154,6 +155,12 @@ pub fn create(form: LenientForm<NewBlogForm>, rockets: PlumeRocket) -> RespondOr
let intl = &rockets.intl.catalog; let intl = &rockets.intl.catalog;
let user = rockets.user.clone().unwrap(); let user = rockets.user.clone().unwrap();
let custom_domain = if *(&form.custom_domain.is_empty()) {
None
} else {
Some(Host::new(*(&form.custom_domain)))
};
let mut errors = match form.validate() { let mut errors = match form.validate() {
Ok(_) => ValidationErrors::new(), Ok(_) => ValidationErrors::new(),
Err(e) => e, Err(e) => e,
@ -185,6 +192,7 @@ pub fn create(form: LenientForm<NewBlogForm>, rockets: PlumeRocket) -> RespondOr
Instance::get_local() Instance::get_local()
.expect("blog::create: instance error") .expect("blog::create: instance error")
.id, .id,
custom_domain,
) )
.expect("blog::create: new local error"), .expect("blog::create: new local error"),
) )

View File

@ -11,5 +11,8 @@
<form method="post" action="@uri!(blogs::create)"> <form method="post" action="@uri!(blogs::create)">
@input!(ctx.1, title (text), "Title", form, errors, "required minlength=\"1\"") @input!(ctx.1, title (text), "Title", form, errors, "required minlength=\"1\"")
<input type="submit" value="@i18n!(ctx.1, "Create blog")" dir="auto"/> <input type="submit" value="@i18n!(ctx.1, "Create blog")" dir="auto"/>
@input!(ctx.1, custom_domain (optional text), "Custom Domain", form, errors.clone(), "")
<input type="submit" value="@i18n!(ctx.1, "Make your blog available under a custom domain")" dir="auto"/>
</form> </form>
}) })