Using Flash for login error message.
This commit is contained in:
		
							parent
							
								
									9eaf121454
								
							
						
					
					
						commit
						dd21d419bd
					
				
							
								
								
									
										27
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								src/main.rs
									
									
									
									
									
								
							@ -26,7 +26,14 @@ use num::BigUint;
 | 
				
			|||||||
use openssl::rsa::Rsa;
 | 
					use openssl::rsa::Rsa;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use ldap3::{ LdapConn, Scope, SearchEntry };
 | 
					use ldap3::{ LdapConn, Scope, SearchEntry };
 | 
				
			||||||
use rocket::request::Form;
 | 
					use rocket::request::{
 | 
				
			||||||
 | 
					    FlashMessage,
 | 
				
			||||||
 | 
					    Form,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					use rocket::response::{
 | 
				
			||||||
 | 
					    Flash,
 | 
				
			||||||
 | 
					    Redirect,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
use rocket_contrib::json::Json;
 | 
					use rocket_contrib::json::Json;
 | 
				
			||||||
use rocket_contrib::templates::Template;
 | 
					use rocket_contrib::templates::Template;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -110,24 +117,30 @@ struct LoginData {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Serialize)]
 | 
					#[derive(Serialize)]
 | 
				
			||||||
struct EmptyContext {
 | 
					struct LoginFormContext {
 | 
				
			||||||
 | 
					    message: Option<String>,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[get("/login")]
 | 
					#[get("/login")]
 | 
				
			||||||
fn login_form() -> Template {
 | 
					fn login_form(flash: Option<FlashMessage<'_, '_>>) -> Template {
 | 
				
			||||||
    let context = EmptyContext {};
 | 
					    let context = LoginFormContext {
 | 
				
			||||||
 | 
					        message: match flash {
 | 
				
			||||||
 | 
					            Some(ref msg) => Some(msg.msg().to_string()),
 | 
				
			||||||
 | 
					            _ => None,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
    Template::render("login_form", &context)
 | 
					    Template::render("login_form", &context)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[post("/login", data = "<form_data>")]
 | 
					#[post("/login", data = "<form_data>")]
 | 
				
			||||||
fn login(form_data: Form<LoginData>) -> String {
 | 
					fn login(form_data: Form<LoginData>) -> Result<Redirect, Flash<Redirect>> {
 | 
				
			||||||
    let auth = BasicAuthentication {
 | 
					    let auth = BasicAuthentication {
 | 
				
			||||||
        username: form_data.username.to_owned(),
 | 
					        username: form_data.username.to_owned(),
 | 
				
			||||||
        password: form_data.password.to_owned(),
 | 
					        password: form_data.password.to_owned(),
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    match auth_user(&auth) {
 | 
					    match auth_user(&auth) {
 | 
				
			||||||
        Ok(ldap_user) => format!("OK! {:?}", ldap_user),
 | 
					        Ok(_ldap_user) => Ok(Redirect::to("/")),
 | 
				
			||||||
        _ => format!("Bad :("),
 | 
					        _ => Err(Flash::error(Redirect::to(uri!(login_form)), "Not able to authenticate with given credentials.")),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,9 @@
 | 
				
			|||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
    <h1>Login</h1>
 | 
					    <h1>Login</h1>
 | 
				
			||||||
    <form action="/login" method="POST">
 | 
					    <form action="/login" method="POST">
 | 
				
			||||||
 | 
					        {% if message %}
 | 
				
			||||||
 | 
					            <strong>{{ message }}</strong>
 | 
				
			||||||
 | 
					        {% endif %}
 | 
				
			||||||
        <fieldset>
 | 
					        <fieldset>
 | 
				
			||||||
            <legend>Login</legend>
 | 
					            <legend>Login</legend>
 | 
				
			||||||
            <div class="form-group">
 | 
					            <div class="form-group">
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user