self.execute("UPDATE session_user SET last_activity = ?1 WHERE id = ?2",&[&now,&session.id]).unwrap();
self.execute("UPDATE session_user SET last_activity = ?1 WHERE id = ?2",&[&now,&session.id])
.unwrap();
Some(session)
}
else{
}else{
// Session timed out
// Should remove session token from session_user
None
}
},
_=>None// no session found, should create new session in get_session_or_new()
}
_=>None,// no session found, should create new session in get_session_or_new()
}
}
fnsave_session(&self,session:SessionUser){
...
...
@@ -114,7 +109,16 @@ impl MedalConnection for Connection {
logincode = ?4,
firstname = ?5,
lastname = ?6,
grade = ?7 WHERE id = ?",&[&session.username,&session.password,&session.salt,&session.logincode,&session.firstname,&session.lastname,&session.grade,&session.id]).unwrap();
grade = ?7 WHERE id = ?",
&[&session.username,
&session.password,
&session.salt,
&session.logincode,
&session.firstname,
&session.lastname,
&session.grade,
&session.id])
.unwrap();
}
fnnew_session(&self)->SessionUser{
letsession_token="123".to_string();
...
...
@@ -122,8 +126,9 @@ impl MedalConnection for Connection {
self.execute("INSERT INTO session_user (session_token, csrf_token, permanent_login, is_teacher)
"SELECT id, password, salt FROM session_user WHERE username = ?1",
&[&username],
|row|->(u32,Option<String>,Option<String>){
(row.get(0),row.get(1),row.get(2))
}){
Ok((id,password_hash,salt))=>{//password_hash ist das, was in der Datenbank steht
ifverify_password(&password,&salt.expect("salt from database empty"),&password_hash.expect("password from database empty")){// TODO: fail more pleasantly
None=>self.query_row("SELECT id, grade, validated, nonvalidated_grade, value, date, needs_validation FROM submission WHERE task = ?1 AND session_user = ?2 ORDER BY id DESC LIMIT 1",&[&task,&session.id],|row|{
...
...
@@ -337,7 +344,6 @@ impl MedalConnection for Connection {