Commit Graph

315 Commits

Author SHA1 Message Date
shockrah
2400b89b12 added result return types to invites module functions
this lets us cut down on worrying about mysql errors
Mysql error responsibility is now the route dispatchers problem
Route dispatcher itself can easily dispatch to another handler
2020-06-02 17:05:14 -07:00
shockrah
20f6273ad7 Fixed compile issue regardign :: vs . typo 2020-06-02 03:45:54 -07:00
shockrah
dd3bbeabd8 InviteRow structure has some methods listed below:
+ new() -> create a new ready to insert invite
+ from_tuple -> helps us translate db responses into a struct
+ as_json_str -> String which we can use as a json payload(jank but whatever it works with proper headers)

FUnctions:
get_invite_by_code: as the name implies grabs an invite assuming its in our db otherwise None
record_invite_usage: blindly modifies the row in the schema, assumes that if we get to this point we're ok to ignore erroneous possibilities
join_invite_code: main dispatcher for joining using the /invite/join route
create_invite: meant to the be the route handler for creating invites later on
Needed: test module since we've basically reworked the whole auth/invite system in one day
2020-06-02 03:44:33 -07:00
shockrah
43a122b855 Removing old unused files from project 2020-06-02 03:39:39 -07:00
shockrah
d1cfc4284c child calls from main_responder (see route_dipatcher + route handlers) now borrow a connection for the sql db 2020-06-02 03:25:11 -07:00
shockrah
19ad0eee9f OpenAuth + Good both have the same kind of dispatcher response
route dispatcher work begins with dispatching to invites::join_invite_code
Fixed the non mutable ref borrowing in funcs that required mutable references like most that get called by route_dispatcher
2020-06-02 01:32:43 -07:00
shockrah
68aeb50175 checking for open routes which require no aut in wall_entry 2020-06-02 01:29:05 -07:00
shockrah
d02f2d9eb7 conatiner module for routes 2020-06-02 01:28:40 -07:00
shockrah
c7c6f530a0 handling ctrl-c 2020-06-02 00:50:09 -07:00
shockrah
9033c80369 Exhaustive response to various authentication failures
response route_dispatcher now guaranteed to fire on proper authentication only
2020-06-02 00:47:28 -07:00
shockrah
e2abc49087 added counter to keys table
this lets us increment uses when a key is going to be used
2020-06-02 00:44:53 -07:00
shockrah
8360efced5 auth::wall_entry now verifies keys upon request
We can now decide what kind of authorization result triggers what kind of responses to the users
Further more error handling has to happen closer to application logic which is the main trade-off of our architecture
2020-06-02 00:32:15 -07:00
shockrah
5ad23eed8c adding mysql_async to dependancy list 2020-06-01 23:05:06 -07:00
shockrah
125a728674 new keys table to let auth::wall_entry check for api access 2020-06-01 23:02:53 -07:00
shockrah
83576f1126 basic query string parser function used to generate hashmaps of parameters
This hashmap is then borrowed by child functions down to the route handlers themselves if they need it
2020-06-01 22:50:58 -07:00
shockrah
e48720d6ac removing basically everything since almost nothing is going to translate over very easily from the auth module
for now we're only going to use two methods to
auth::wall_entry is what allows to impose rate on a per user basic, not per route, although this feature can be configured later
2020-06-01 22:28:06 -07:00
shockrah
c1f8ebee1d slight typo in parameters fixed 2020-06-01 22:25:21 -07:00
shockrah
b3289ca9bd Basic router skeleton for freechat's new auth/dispatch model 2020-06-01 22:25:01 -07:00
shockrah
c98d6dc503 Dependancies moving to full asynchronous libraries 2020-06-01 22:19:06 -07:00
shockrah
5a2a87fff7 /channels/list/voice + text now implemted and ready for testing 2020-05-27 21:29:57 -07:00
shockrah
e99e30b45c Moved VOICE_CHANNEL & TEXT_CHANNEL const's to channels module 2020-05-27 21:29:27 -07:00
shockrah
4e61ddbe11 New smol note regarding state of API server 2020-05-27 20:59:17 -07:00
shockrah
cc22a56538 Removed used Generic error response 2020-05-27 19:59:01 -07:00
shockrah
db901010b0 prefixed route uri for get_voice_channels and get_text_channels with /list to be more specific to their behavior 2020-05-25 13:48:16 -07:00
shockrah
d9ac6c08a2 experimental generic error handler 2020-05-25 13:46:57 -07:00
shockrah
a14b7dd677 removed old web files which are no longer used 2020-05-22 16:26:22 -07:00
shockrah
13ab387a93 new test for encode params 2020-05-20 02:05:43 -07:00
shockrah
97e6b026cc utils::new_key now has a larger entropy pool + is generally smaller/quicker
encode params takes a &[u8] as parameter now instead of &str
utils::decode_params removed for now as it has not real use atm
2020-05-20 02:05:06 -07:00
shockrah
4f64fc3a13 utils::decode_params now uses the same config as utils::encode_params 2020-05-20 01:21:01 -07:00
shockrah
40d4720977 Helper function in test::auth to quickly build fake users
New test to verify correct behavior of '/auth/login' route
2020-05-20 00:50:46 -07:00
shockrah
ab4fe70081 test::auth::mysql_conn helper function for mysql connections
test::auth::feed_n_leave added form header and cleaned up post parameters
test::auth::dummy_leave standalone test for route => /auth/leave
2020-05-19 21:48:13 -07:00
shockrah
f12048b49b utils::encode_param now encodes data without padding 2020-05-19 21:46:17 -07:00
shockrah
84ccfff2aa auth::login now emites a url safe api session key
models::_USER_ONLINE updated to suppress unused var warnings
2020-05-19 20:15:53 -07:00
shockrah
895d7246f0 auth::create_new_session_key => impl not tested
auth::login now generates a 500 on db insertion failure
auth::login returning single json value instead of full struct
2020-05-19 20:13:56 -07:00
shockrah
87fc6700a4 models::InsertableSession added for session creation 2020-05-19 20:10:39 -07:00
shockrah
ec4f9b5302 using secret as primary key 2020-05-19 20:08:26 -07:00
shockrah
b007f57dfe priv auth::blind_remove_session => impl not tested
pub auth::login => impl not tested
2020-05-19 19:36:29 -07:00
shockrah
dcb9e9641e Skeleton code for login route handler
Helper functions to be written in next commits
2020-05-17 16:15:53 -07:00
shockrah
2b9635a2b1 removed auto_increment from session key id
Keys are to be generated by rust safely
2020-05-17 16:15:27 -07:00
shockrah
9e59d8200d added generated code from diesel migration run for sessions 2020-05-17 16:05:45 -07:00
shockrah
883a007371 mod::rand_utils no longer exists 2020-05-17 16:05:21 -07:00
shockrah
f30a8abfc5 Removed old irrelevant comment 2020-05-17 16:05:01 -07:00
shockrah
9c03207489 Basic sessions schema which is used as a api key cache 2020-05-17 16:04:43 -07:00
shockrah
0340204141 moved rand_utils::new_key to utils crate 2020-05-10 13:06:54 -07:00
shockrah
bd45508584 base64 encode/decode functions added for sake of usage simplicity
URL_SAFE encoding is used
Both functions seem to pass the tests as well
2020-05-10 13:02:59 -07:00
shockrah
11669840b2 Adding base64 2020-05-10 12:56:55 -07:00
shockrah
68d864710a Finished a test for using an invite via the /invite/join/<code> route 2020-05-10 12:56:38 -07:00
shockrah
52119d3ea7 Adding base64 to send/receive api_keys
Keys can contain special chars so we're preserving our entropy pool by encoding to url_safe chars before sending
2020-05-10 12:55:42 -07:00
shockrah
4703116e32 Verified that the join function is working as intended 2020-05-07 22:14:44 -07:00
shockrah
cd41dc64c3 create_new_user no longer checks id column when comparing against unix timestamps 2020-05-07 22:14:26 -07:00
shockrah
383fd59eba Removed dead new_user_id() function 2020-05-07 22:13:44 -07:00
shockrah
55a09b5e98 Removed static files route handlers as they'll never be used
added auth route
2020-05-06 22:22:40 -07:00
shockrah
281b734073 calls to create_new_user no longer require a connection to be copied 2020-05-06 22:19:42 -07:00
shockrah
040d58a7ad Cleaned up some verbosity 2020-05-06 22:19:12 -07:00
shockrah
22a1fd1730 Fixed issue with User database responses:
Added insertable to ensure compilation even though we dont use that trait
2020-05-06 22:18:51 -07:00
shockrah
81e6fd0a13 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
2020-05-06 02:51:26 -07:00
shockrah
2f40da6c82 FromForm issue still there with /join route
Otherwise ready to integrate tests with auth module
2020-05-06 02:21:20 -07:00
shockrah
220bc11ef0 Fixed all 35 compile time issues with new auth module
Ready for testing
2020-05-06 02:20:32 -07:00
shockrah
306156407d auth module useable now 2020-05-06 01:46:06 -07:00
shockrah
b729537088 updated queries to use the new user schema columns
removed old tests which have to be rebuilt from scratch
2020-05-06 01:45:49 -07:00
shockrah
811c6902ac new users schema
changed column names to be more concise
2020-05-06 00:35:01 -07:00
shockrah
57dad692ae poc for a leave route for those that no longer want to be a part of a given server 2020-05-05 23:46:29 -07:00
shockrah
5652388f4c /join 'ing for new users code steramlined a bit
*mostly a coding qol change
2020-05-05 23:20:47 -07:00
shockrah
62204e52ca dumy commit as work will continue on new async branch 2020-05-05 17:09:18 -07:00
shockrah
83aafa9ff5 new user structs for interacting with end users/db 2020-04-26 18:08:01 -07:00
shockrah
a217c64666 Essential data now passable from server to client regarding channels 2020-03-31 17:15:01 -07:00
shockrah
972d79d44b more custom message support for error type responses 2020-03-31 17:13:07 -07:00
shockrah
5c20d30502 changed responder code to use the new error responder in crate::err 2020-03-31 17:09:45 -07:00
shockrah
fe7eb7e392 new error responder 2020-03-31 17:04:01 -07:00
shockrah
960233b7bc testing user list endpoint
new macro to shorten test code
2020-03-17 23:23:52 -07:00
shockrah
3b3059e6d2 new get_user_list endpoint to well, get the list of online users 2020-03-17 22:27:10 -07:00
shockrah
eb76c070bd clarified goals 2020-03-17 21:34:43 -07:00
shockrah
f343f6d252 new field for online status of users
new short structure describing online users
2020-03-17 21:34:32 -07:00
shockrah
9f586c2569 removing old depracated routes/features 2020-03-11 00:43:31 -07:00
shockrah
a1402e79bb router registration for get_voice_channels 2020-03-11 00:40:04 -07:00
shockrah
ce4ef515bd sample function to grab all the voice channels 2020-03-11 00:39:23 -07:00
shockrah
7c2e1abbc3 new channel schema which is meant to encompass both text and voice channels 2020-03-11 00:39:10 -07:00
shockrah
558a40523e net payloads for channels and online users 2020-03-10 18:06:33 -07:00
shockrah
7e04e6010a new schema to contain basic channel information 2020-03-10 17:59:27 -07:00
shockrah
8ae877f3f9 updated the response when creating new users 2020-03-10 16:48:21 -07:00
shockrah
924c15a436 No more nullable uses field(it was signed) so option was redundant 2020-03-09 00:52:09 -07:00
shockrah
2eb2a83c76 testing user generation on invite usage 2020-03-09 00:26:29 -07:00
shockrah
ae751a2d2b removed unused schema 2020-03-09 00:26:04 -07:00
shockrah
50cd718e8a more robust test to deal with invite generation 2020-03-08 23:01:41 -07:00
shockrah
12dd244f9c serde json used for testing purposes mainly 2020-03-08 22:53:43 -07:00
shockrah
e38f8a0a2b silly test 2020-03-08 20:20:57 -07:00
shockrah
e4f03b951e invites:
handling result from diesel
generally:
fixed pub/private issue in modles module
renamed rand_utils functions to be snake case
2020-03-08 20:07:26 -07:00
shockrah
89836449a1 createNewUser now returns a User(not payload::NewUser) 2020-03-08 19:50:47 -07:00
shockrah
d9e892b1e0 Updated blanknewUser macro
use_invite now returns a Json<User>
2020-03-08 19:50:17 -07:00
shockrah
d7c70afd68 rust code to go along with lack of optional fields 2020-03-08 19:49:36 -07:00
shockrah
50c2c1da0e removed optional fields 2020-03-08 19:49:22 -07:00
shockrah
b39a95f3a3 rand utils no longer using payload User struct 2020-03-08 19:49:10 -07:00
shockrah
8cbfa9520e new users no longer contain optional fields
only using completely necessary information
2020-03-08 19:20:08 -07:00
shockrah
23166a9e99 bcrypt used to hash user passes 2020-03-08 19:13:47 -07:00
shockrah
e9a880f6a9 user generation added
randomness is generated via /dev/urandom thru getrandom crate
2020-03-08 19:13:24 -07:00
shockrah
ec88a08391 new simplified users schema 2020-03-07 22:06:03 -08:00
shockrah
316c409796 new models for users table interface 2020-03-07 22:05:46 -08:00
shockrah
54f5b1bbe1 new route to create users
still requires some kind of auth however
2020-03-07 21:51:54 -08:00
shockrah
2fe1bb878e get random being used for crypto rng 2020-03-07 21:51:16 -08:00
shockrah
8220f1f745 depracation of website module 2020-03-07 20:52:41 -08:00
shockrah
f5264fbff7 goals for the invites module 2020-03-07 20:51:58 -08:00
shockrah
8abb8ca29c depracating the website module 2020-03-07 20:50:58 -08:00
shockrah
62fd63d3b5 invite generation cleaned and working
added a basic test for the fixed invite generation
2020-03-07 18:54:46 -08:00
shockrah
58fcb99e03 Rocket config changed to match the .env
build-sass configuration chanced from using sass to sassc
2020-03-07 18:50:48 -08:00
shockrah
b29cbed17c print things out when testing 2020-03-07 18:50:03 -08:00
shockrah
3a995fa469 removing users module for now because invites are getting reworked
a lot of structural changes are coming to how users are dealt with
2020-03-07 16:51:22 -08:00
shockrah
0a587da14c goals 2020-03-07 16:08:18 -08:00
shockrah
35a85be578 minor config change for development 2020-03-07 16:07:26 -08:00
shockrah
64f20f01ec structures for authentication payloads
added new temporary goal
slowly integrating payload module into invites and users modules
2020-02-13 17:13:41 -08:00
shockrah
6c10c2160b newuser structure for those that use an invite link 2020-02-08 16:49:18 -08:00
shockrah
57db968568 new_users fields are more explicit
also easier to work with given current goals
2020-02-07 15:43:46 -08:00
shockrah
c2c82aec9b new_users cache table
reset sql added for dev purposes
2020-02-07 15:23:05 -08:00
shockrah
3d7547007a updated table description 2020-02-07 15:17:28 -08:00
shockrah
dd3acb5abe Basic new user route with a sample test
Creating a payloads module as well
2020-02-07 14:57:44 -08:00
shockrah
6dd002171c pottentially depracating web routes soon 2020-02-05 17:50:45 -08:00
shockrah
b52de76a66 removed old migratiions from unsed internal library 2020-02-05 17:48:57 -08:00
shockrah
d2c45761dd invites usage route '/invite/<hash>' now usable 2020-02-05 17:45:12 -08:00
shockrah
da0af22ee5 removed pointless function 2020-02-05 16:31:35 -08:00
shockrah
1e1b9d4f72 changed model fields to pub
struct Invite now insertable
2020-02-05 16:31:26 -08:00
shockrah
c5461f16ad main now matches against dotenv return val
main also returns a Result<(), i32>
2020-02-05 16:30:50 -08:00
shockrah
03b111c4dd working route for generating invite links
return value may need to change slightly however
2020-02-05 16:30:09 -08:00
shockrah
fa58724533 update db url from rocket config 2020-02-05 16:29:42 -08:00
shockrah
8978b92efd models module 2020-02-05 15:11:56 -08:00
shockrah
f08d256f4e migrations reflecting previous commit's schema 2020-02-05 14:17:25 -08:00
shockrah
12b666518c schema(rust) first pass 2020-02-05 14:17:07 -08:00
shockrah
7c3420287e fixed incorrect dep from diesel_sqlite_pool to diesel_mysql_pool 2020-02-05 13:32:36 -08:00
shockrah
7ea474f044 sample db things and updated invites table structure to allow for greater entropy pools 2020-02-04 00:44:55 -08:00
shockrah
7b8d849758 simpler users table for now 2020-02-04 00:36:41 -08:00
shockrah
f3e0570182 removing sub library and moving this code into our master codebase 2020-02-04 00:30:58 -08:00
shockrah
b2ef7fd6d1 simple sql connection script: just to reduce typing 2020-02-04 00:26:44 -08:00
shockrah
d54913a26a registering routes for generating/usig invites 2020-02-04 00:25:59 -08:00
shockrah
6634641937 commiting old but nearly done work before goal shifting 2020-02-04 00:25:27 -08:00
shockrah
4c1820f910 reset scripts now in place 2020-02-04 00:21:58 -08:00
shockrah
abf573812f new struct for invites 2020-01-31 00:16:22 -08:00
shockrah
6584b50d49 dev files for this lib 2020-01-31 00:00:39 -08:00
shockrah
716f7e4cef removed fluff env file 2020-01-30 23:55:25 -08:00
shockrah
4309f9890e poc api code for generating invites 2020-01-30 23:54:53 -08:00
shockrah
ecc08cc3f1 invites added to schemas rust code 2020-01-30 23:54:18 -08:00
shockrah
b0ab68c134 basic invites migrations ready 2020-01-30 23:52:06 -08:00
shockrah
a1e6d6131d print flag now lets us control println output in test code 2020-01-30 17:30:27 -08:00
shockrah
b3bd800455 new deps 2020-01-30 17:30:00 -08:00
shockrah
0518a896d6 first steps into an invite system 2020-01-30 00:04:03 -08:00
shockrah
113aff4955 removed fluff modules 2020-01-30 00:03:51 -08:00
shockrah
289ab5c829 using .env config for now 2020-01-29 23:26:46 -08:00
shockrah
a3519e32a6 config issues are being ignored for now there are bigger things to deal with 2020-01-29 23:25:37 -08:00
shockrah
e0ede8d96b defaults are coded directly into templates 2020-01-29 23:25:18 -08:00
shockrah
857885789f removed old fluff 2020-01-29 22:40:57 -08:00
shockrah
320310e680 header using new config vars 2020-01-29 20:18:05 -08:00
shockrah
5dcc6b2096 its ugly but way more safe and uses the config properly 2020-01-29 20:16:50 -08:00
shockrah
955331323b new/simplified default website config 2020-01-29 20:16:20 -08:00