Commit Graph
100 Commits
Author SHA1 Message Date
shockrah e8e1a13d6d auth::wall_entry now uses &serde_json::Value's as a param 2020-06-18 22:31:15 -07:00
shockrah 2e350133a1 http_params::parse_params now using serde_json to convert the body into a Value set
Why: The idea is that writing a body parser is both really annoying and not really optimal
At this time I need some way of getting body params easily while endpionts are tested
at some point we'll come up with a smaller footprint way of parsing http parameters
Ideally one that also comes with the ability to combine parameters but,
for now using serde_json suffices.
2020-06-18 22:30:40 -07:00
shockrah 250efd71d9 serde_json added to cargo cache 2020-06-18 22:04:57 -07:00
shockrah 5e21811b8d converting route_join_invite_code to use new json Value types 2020-06-18 22:04:45 -07:00
shockrah 3b0b79c525 messaging module ready to start testing send functionalities 2020-06-18 20:11:31 -07:00
shockrah 32c8619d93 moving http parameterization to its own module 2020-06-18 20:10:58 -07:00
shockrah 0b6b5e51c6 new module to handle parsing parameters from requests 2020-06-18 20:10:35 -07:00
shockrah 63c1fa1137 new static route string for /message/send 2020-06-17 12:38:33 -07:00
shockrah 4985c7f07f structures for members and badges 2020-06-17 12:37:37 -07:00
shockrah 17a23d41f5 switched the order fields to match what rust typles expect 2020-06-03 01:20:12 -07:00
shockrah 50962598e5 fixed borrow/moving issue with create_channel call
removed some unsed variables
2020-06-03 00:14:45 -07:00
shockrah 7fa103b1dc primary dispatcher to insert channels now built
parameter parsing functino was built for the primary dispatcher
New InsterableChannel structure added: mysql controls the id field for us
2020-06-03 00:08:35 -07:00
shockrah 9e6f32e36e Description field is now optional as not all channels will need one 2020-06-03 00:02:22 -07:00
shockrah 8d149014e1 Added documentation to current code
Explaining why things are being done
2020-06-02 22:29:34 -07:00
shockrah 4f71e566c3 Removed sql_traits module as it was merely a stepping stone module
Channel struct now adpots a from_tup method and can be seen in use in get_channels_vec
2020-06-02 22:10:28 -07:00
shockrah 08e5b87ba4 Helper functionality
InviteRow now has some utilities built into it to help with translating values from various types needed throughout the codebase
+from_tuple -> because mysql is used to grab tuples before structs
+as_json_str -> because we respond primarily with json payloads
list_channels is considered a main entry point from the dispather and thus handles errors  itself
2020-06-02 22:04:54 -07:00
shockrah 528d7502d1 removed perms and limit on channels until channels module is done 2020-06-02 22:01:21 -07:00
shockrah d2eb0597c3 new route regarding invite creation being built 2020-06-02 17:50:23 -07:00
shockrah b2a6da2561 auth::wall_entry now follows the same error system as invites module
Result of function forwards to its caller so we dont deal w/ mysql so much
2020-06-02 17:05:54 -07:00
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 ea2cccb024 note regarding badges ready for actual badges notes 2020-05-26 02:40:29 -07:00
shockrah d3bcb5a623 more formatting fixes 2020-05-25 14:00:15 -07:00
shockrah bcff4f02a7 updated bullet point formatting as gitlab clobbered newlines 2020-05-25 13:51:47 -07:00
shockrah 1cb95cb59e Merging updated docs with updated get_<type>_channels uris 2020-05-25 13:48:23 -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
shockrahwow edca7b3a4a new docs builder script to be used by the docker container later 2020-05-25 13:41:03 -07:00
shockrahwow 0cddfc3289 structures section now in its own page 2020-05-25 13:40:19 -07:00
shockrahwow e945897ac1 removed old outdated docs 2020-05-25 13:39:49 -07:00
shockrahwow ec25992578 moved structures secction to its own .md + sub sectioned everything to fit into a greater sub context in the full docs 2020-05-25 13:38:24 -07:00
shockrah b29f9d6934 api::auth route parameters have updated notes regarding types 2020-05-25 13:16:58 -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 04ca53dc79 new docs for the updated api requirements 2020-05-05 21:56:39 -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 1cab9b8bb8 note in api regarding purpose of doc 2020-04-25 18:33:16 -07:00
shockrahwow 6d0bfc1798 changing initial screen to be a welcome page/nav page to other servers 2020-04-17 22:59:54 -07:00
shockrahwow 1c10cd5174 renamed libraries directory to libs/ 2020-04-17 18:49:02 -07:00
shockrahwow cc0699f095 new directory structure and starting settings pages 2020-04-17 18:46:05 -07:00
shockrahwow 0b607a7e64 removed python/kivy things 2020-04-17 18:45:39 -07:00
shockrahwow 6e9c485d69 notes about what the client should expect from the api for now 2020-04-17 17:13:42 -07:00