From 0e0cd0fdcd9abef01ee5ef1cc067f14e34656ad4 Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 13 Sep 2018 18:52:27 +1000 Subject: [PATCH] what the --- ops/migrations/20180913000513_create_users.js | 13 +++++++++---- server/Cargo.toml | 2 ++ server/src/combat.rs | 2 +- server/src/cryp.rs | 4 +--- server/src/main.rs | 2 ++ server/src/net.rs | 2 +- server/src/rpc.rs | 2 +- server/src/user.rs | 17 ++++++++++++++--- 8 files changed, 31 insertions(+), 13 deletions(-) diff --git a/ops/migrations/20180913000513_create_users.js b/ops/migrations/20180913000513_create_users.js index bf7bb512..a618a7e0 100755 --- a/ops/migrations/20180913000513_create_users.js +++ b/ops/migrations/20180913000513_create_users.js @@ -1,8 +1,13 @@ exports.up = async knex => { - return knex.schema.createTable('users', table => { - table.uuid('id').primary(); - table.text('name'); - }); + return knex.schema.createTable('users', table => { + table.uuid('id').primary(); + table.string('name', 42).notNullable().unique(); + table.string('password').notNullable(); + table.string('token', 64).notNullable(); + + table.index('name'); + table.index('id'); + }); }; exports.down = async () => {}; \ No newline at end of file diff --git a/server/Cargo.toml b/server/Cargo.toml index ba15b57b..0eae311f 100755 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -9,7 +9,9 @@ uuid = { version = "0.5", features = ["serde", "v4"] } serde = "1" serde_derive = "1" serde_cbor = "0.9" + ws = "*" +bcrypt = "0.2" dotenv = "0.9.0" env_logger = "*" diff --git a/server/src/combat.rs b/server/src/combat.rs index d10ffbc9..dcec1447 100755 --- a/server/src/combat.rs +++ b/server/src/combat.rs @@ -82,7 +82,7 @@ pub fn test_battle() { match outcome.winner() { Some(w) => println!("{:?} is the winner with {:?} hp remaining", w.name, w.hp), - None => println!("{:?} was a draw", outcome), + // None => println!("{:?} was a draw", outcome), }; return diff --git a/server/src/cryp.rs b/server/src/cryp.rs index c6b609b4..793c3986 100755 --- a/server/src/cryp.rs +++ b/server/src/cryp.rs @@ -1,8 +1,6 @@ use uuid::Uuid; use rand::prelude::*; use serde_cbor::*; -use std::fs::File; -use std::io::prelude::*; use rpc::{GenerateParams}; use skill::{Skill}; @@ -104,7 +102,7 @@ impl Cryp { }; } - pub fn named(mut self, name: String) -> Cryp { + pub fn named(self, name: String) -> Cryp { self.name = name.clone(); self } diff --git a/server/src/main.rs b/server/src/main.rs index 29b79bba..4a761a0e 100755 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -14,6 +14,8 @@ extern crate serde_cbor; #[macro_use] extern crate serde_derive; +extern crate bcrypt; + mod cryp; mod battle; mod net; diff --git a/server/src/net.rs b/server/src/net.rs index 7e408557..14c4210b 100755 --- a/server/src/net.rs +++ b/server/src/net.rs @@ -32,7 +32,7 @@ impl Handler for Server { fn on_close(&mut self, code: CloseCode, reason: &str) { match code { CloseCode::Normal => println!("The client is done with the connection."), - CloseCode::Away => println!("The client is leaving the site."), + // CloseCode::Away => println!("The client is leaving the site."), CloseCode::Abnormal => println!( "Closing handshake failed! Unable to obtain closing status from client."), _ => println!("The client encountered an error: {}", reason), diff --git a/server/src/rpc.rs b/server/src/rpc.rs index de1f440e..37482a9e 100644 --- a/server/src/rpc.rs +++ b/server/src/rpc.rs @@ -1,7 +1,6 @@ use std::result::Result as StdResult; use ws::{Message}; use serde_cbor::{from_slice}; -use serde_cbor::error::Error as CborError; use net::Db; use cryp::generate; @@ -73,6 +72,7 @@ struct AccountCreateMsg { #[derive(Debug,Clone,Serialize,Deserialize)] pub struct AccountCreateParams { pub name: String, + pub password: String, } diff --git a/server/src/user.rs b/server/src/user.rs index 63f2254c..49f599c1 100644 --- a/server/src/user.rs +++ b/server/src/user.rs @@ -3,22 +3,33 @@ use uuid::Uuid; use net::Db; use rpc::{AccountCreateParams}; +use bcrypt::{DEFAULT_COST, hash}; struct User { name: String, + password: String, id: Uuid, } pub fn create(params: AccountCreateParams, db: Db) -> Vec { + let pw_hash = hash(¶ms.password, DEFAULT_COST) + .expect("unable to hash password"); + let uuid = Uuid::new_v4(); + let user = User { id: uuid, + password: pw_hash, name: params.name, }; - let entry = db.execute("INSERT INTO users (id, name) - VALUES (?1, ?2)", - &[&user.id.to_string(), &user.name]).unwrap(); + let query = " + INSERT INTO users (id, name, password) + VALUES ($1, $2, $3) + "; + + let entry = db + .query(query, &[&user.id.to_string(), &user.name]).unwrap(); println!("{:?}", entry);