Invite are now consumed via a path with two dynamic params
/invite/join/<hash>/<name> is the real path to be used now but the app ui should this behavior in some clever way
This commit is contained in:
parent
2f40da6c82
commit
81e6fd0a13
@ -56,7 +56,7 @@ impl<'r> Responder<'r> for AuthErr {
|
||||
}
|
||||
|
||||
|
||||
pub fn join(conn: DBConn, params: Form<JoinParams>, hashcode: u64) -> AuthResult<Json<User>, AuthErr>{
|
||||
pub fn join(conn: DBConn, hashcode: u64, name: String) -> AuthResult<Json<User>, AuthErr>{
|
||||
/*
|
||||
* Requires <code:int> -> body
|
||||
* Requires <name:string> -> body
|
||||
@ -68,13 +68,13 @@ pub fn join(conn: DBConn, params: Form<JoinParams>, hashcode: u64) -> AuthResult
|
||||
const negate: &'static str = "Malformed request";
|
||||
|
||||
let diesel_result: Result<Invite, diesel::result::Error> = invites
|
||||
.filter(invites::dsl::id.eq(params.code))
|
||||
.filter(invites::dsl::id.eq(hashcode))
|
||||
.first(&conn.0);
|
||||
|
||||
if let Ok(data) = diesel_result {
|
||||
match data.uses {
|
||||
1 ..= std::i32::MAX => {
|
||||
let new_user = crate::users::create_new_user(conn, params.name);
|
||||
let new_user = crate::users::create_new_user(conn, name);
|
||||
// update the uses counter
|
||||
let _ignored = diesel::update(invites.filter(invites::dsl::id.eq(hashcode)))
|
||||
.set(uses.eq(data.uses - 1))
|
||||
|
@ -1,11 +1,10 @@
|
||||
// Module handles creating invites for potentially new users
|
||||
use diesel::{self, prelude::*};
|
||||
use rocket_contrib::json::Json;
|
||||
use rocket::request::Form;
|
||||
use chrono::{Duration, Utc};
|
||||
use rand::random;
|
||||
|
||||
use crate::auth::{join, JoinParams, AuthResult, AuthErr};
|
||||
use crate::auth::{join, AuthResult, AuthErr};
|
||||
use crate::DBConn;
|
||||
use crate::models::{User, Invite};
|
||||
use crate::schema;
|
||||
@ -45,11 +44,11 @@ pub fn generate_invite(conn: DBConn) -> Json<Invite> {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: `params` is non-payload-supporting somehow
|
||||
// NOTE: unted functions all the way down here
|
||||
#[get("/<hash>", data = "<params>")]
|
||||
pub fn use_invite(hash: u64, params: Form<JoinParams>, conn: DBConn) -> AuthResult<Json<User>, AuthErr>{
|
||||
join(conn, params, hash)
|
||||
// GET doesn't really like having data in its body for whatever reason
|
||||
// Problem: invite/joining system is gonna have to get a redesign
|
||||
#[get("/join/<hash>/<name>")]
|
||||
pub fn use_invite(hash: u64, name: String, conn: DBConn) -> AuthResult<Json<User>, AuthErr>{
|
||||
join(conn, hash, name)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
Loading…
Reference in New Issue
Block a user