@@ -51,7 +51,12 @@ UserController = {
5151 self .session .user_id = nil
5252 end
5353
54+ if not self .session .previous_username_admin then
55+ self .session .previous_username_admin = ' '
56+ end
57+
5458 return jsonResponse ({
59+ previous_username_admin = self .session .previous_username_admin ,
5560 username = self .session .username ,
5661 role = self .session .role ,
5762 verified = self .session .verified ,
@@ -453,6 +458,10 @@ UserController = {
453458 yield_error (message )
454459 end
455460 end
461+
462+ self .session .previous_username_admin = ' '
463+ self .session .previous_cookie_persist_admin = self .params .persist
464+
456465 self .session .username = self .queried_user .username
457466 self .session .role = self .queried_user .role
458467 self .session .verified = self .queried_user .verified
@@ -466,22 +475,43 @@ UserController = {
466475 { days_left = self .queried_user .days_left })
467476 end
468477 else
478+ -- If the person logging in was the previous admin, reinstate Admin's login
479+ if (self .session .previous_username_admin and (self .session .previous_username_admin == self .queried_user .username )) then
480+ self .session .previous_username_admin = ' '
481+ -- self.session.previous_cookie_persist_admin cleared at the end
482+ self .session .username = self .queried_user .username
483+ self .session .role = self .queried_user .role
484+ self .session .verified = self .queried_user .verified
485+ self .session .user_id = self .queried_user .id
486+ self .cookies .persist_session = self .session .previous_cookie_persist_admin
487+
488+ self .session .previous_cookie_persist_admin = ' false'
489+
490+ return okResponse (' Alias Logged out. Admin User ' .. self .queried_user .username
491+ .. ' logged back in.' )
492+ end
493+
469494 -- Admins can log in as other people
470495 assert_admin (self , ' wrong password' )
471- local previous_username = self .current_user .username
496+
497+ self .session .previous_username_admin = self .current_user .username
498+ self .session .previous_cookie_persist_admin = self .cookies .persist_session
472499 self .session .username = self .queried_user .username
473500 self .session .role = self .queried_user .role
474501 self .session .verified = self .queried_user .verified
475502 self .session .user_id = self .queried_user .id
476503 self .cookies .persist_session = ' false'
477- return okResponse (' User ' .. previous_username ..
504+
505+ return okResponse (' User ' .. self .session .previous_username_admin ..
478506 ' now logged in as ' .. self .queried_user .username )
479507 end
480508 end ,
481509
482510 logout = function (self )
483511 -- POST /logout
484512 -- Description: Logs out the current user from the system.
513+ self .session .previous_username_admin = ' '
514+ self .session .previous_cookie_persist_admin = ' false'
485515 self .session .username = ' '
486516 self .session .user_id = nil
487517 self .cookies .persist_session = ' false'
0 commit comments