@@ -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 ,
@@ -459,6 +464,10 @@ UserController = {
459464 yield_error (message )
460465 end
461466 end
467+
468+ self .session .previous_username_admin = ' '
469+ self .session .previous_cookie_persist_admin = self .params .persist
470+
462471 self .session .username = self .queried_user .username
463472 self .session .role = self .queried_user .role
464473 self .session .verified = self .queried_user .verified
@@ -472,22 +481,43 @@ UserController = {
472481 { days_left = self .queried_user .days_left })
473482 end
474483 else
484+ -- If the person logging in was the previous admin, reinstate Admin's login
485+ if (self .session .previous_username_admin and (self .session .previous_username_admin == self .queried_user .username )) then
486+ self .session .previous_username_admin = ' '
487+ -- self.session.previous_cookie_persist_admin cleared at the end
488+ self .session .username = self .queried_user .username
489+ self .session .role = self .queried_user .role
490+ self .session .verified = self .queried_user .verified
491+ self .session .user_id = self .queried_user .id
492+ self .cookies .persist_session = self .session .previous_cookie_persist_admin
493+
494+ self .session .previous_cookie_persist_admin = ' false'
495+
496+ return okResponse (' Alias Logged out. Admin User ' .. self .queried_user .username
497+ .. ' logged back in.' )
498+ end
499+
475500 -- Admins can log in as other people
476501 assert_admin (self , ' wrong password' )
477- local previous_username = self .current_user .username
502+
503+ self .session .previous_username_admin = self .current_user .username
504+ self .session .previous_cookie_persist_admin = self .cookies .persist_session
478505 self .session .username = self .queried_user .username
479506 self .session .role = self .queried_user .role
480507 self .session .verified = self .queried_user .verified
481508 self .session .user_id = self .queried_user .id
482509 self .cookies .persist_session = ' false'
483- return okResponse (' User ' .. previous_username ..
510+
511+ return okResponse (' User ' .. self .session .previous_username_admin ..
484512 ' now logged in as ' .. self .queried_user .username )
485513 end
486514 end ,
487515
488516 logout = function (self )
489517 -- POST /logout
490518 -- Description: Logs out the current user from the system.
519+ self .session .previous_username_admin = ' '
520+ self .session .previous_cookie_persist_admin = ' false'
491521 self .session .username = ' '
492522 self .session .user_id = nil
493523 self .cookies .persist_session = ' false'
0 commit comments