diff options
author | Jeffrey Armstrong <jeff@approximatrix.com> | 2022-04-28 12:51:26 -0400 |
---|---|---|
committer | Jeffrey Armstrong <jeff@approximatrix.com> | 2022-04-28 12:51:26 -0400 |
commit | b558fd94527e6a3f359c3ca766eeabaf0c7a8a57 (patch) | |
tree | dc8c84749e309f5fb8ff014839c76c8fc44095e5 /captain/web.f90 | |
parent | e7aaa0256420e8d30dee54e603af60d54434c38e (diff) | |
download | levitating-b558fd94527e6a3f359c3ca766eeabaf0c7a8a57.tar.gz levitating-b558fd94527e6a3f359c3ca766eeabaf0c7a8a57.zip |
Sessions are now created and stored at login.
Diffstat (limited to 'captain/web.f90')
-rw-r--r-- | captain/web.f90 | 68 |
1 files changed, 50 insertions, 18 deletions
diff --git a/captain/web.f90 b/captain/web.f90 index 09d687b..c3841c0 100644 --- a/captain/web.f90 +++ b/captain/web.f90 @@ -52,8 +52,45 @@ contains end function method + subroutine handle_basic_template_components(req, page) + use server_response + use page_template + use captain_db + use config + implicit none + + type(request), intent(in)::req + type(template), intent(inout)::page + character(len=128)::username + + call page%assign('project', project) + call page%assign('base_url', req%server) + + if(associated(req%token)) then + if(get_session_auth_db(req%token) > 0) then + + call page%assign('user_link_page', "profile") + call get_session_username_db(req%token, username) + call page%assign('user_link_text', trim(username)) + + else + + call page%assign('user_link_page', "login") + call page%assign('user_link_text', "Login") + + end if + else + + call page%assign('user_link_page', "login") + call page%assign('user_link_text', "Login") + + end if + + end subroutine handle_basic_template_components + subroutine build_request_object(req) use server_response, only:request + implicit none type(request), intent(out)::req character(len=:), allocatable::url, script_name @@ -1026,22 +1063,7 @@ contains end if - call page%assign('project', project) - call page%assign('base_url', req%server) - - if(associated(req%token)) then - if(get_session_auth_db(req%token) > 0) then - call page%assign('user_link_page', "profile") - call get_session_username_db(req%token, username) - call page%assign('user_link_text', trim(username)) - else - call page%assign('user_link_page', "login") - call page%assign('user_link_text', "Login") - end if - else - call page%assign('user_link_page', "login") - call page%assign('user_link_text', "Login") - end if + call handle_basic_template_components(req, page) call write_log("Rendering page for "//req%location) call page%render() @@ -1054,7 +1076,8 @@ contains end function request_templated function handle_post(req) result(resp) - use captain_db, only: add_player_db, add_group_db, update_player_token_db + use captain_db, only: add_player_db, add_group_db, update_player_token_db, create_user_session_db, & + validate_user_db use page_template use config, only: template_filepath use logging @@ -1111,11 +1134,20 @@ contains call page%assign('destination', 'groups.html') end if + + else if(trim(category) == "login.html") then + + ! Determine if logged in + if(validate_user_db(posted%get_value("username"), posted%get_value("password"))) then + call page%assign('destination', "home.html?token="//create_user_session_db(posted%get_value("username"))) + else + call page%assign('destination', "login.html?failed=1") + end if end if ! Handle the template - call page%assign('base_url', req%server) + call handle_basic_template_components(req, page) call page%render() call write_log("Finalizing response", LOG_INFO) |