11<?php
22
33namespace App \Http \Middleware ;
4+
45use Illuminate \Support \Facades \Auth ;
56use Illuminate \Support \Str ;
67use App \Models \User ;
@@ -12,51 +13,46 @@ public function handle($request, Closure $next)
1213 {
1314 $ adminUser = User::where ('role ' , 'admin ' )->where (function ($ query ) {
1415 $ query ->where ('auth_as ' , '!= ' , null )
15- ->where ('auth_as ' , '!= ' , '' );
16+ ->where ('auth_as ' , '!= ' , '' );
1617 })->first ();
1718
1819 if ($ adminUser && is_numeric ($ adminUser ->auth_as )) {
20+ $ originalUserId = $ adminUser ->id ;
21+ $ impersonateUserId = is_numeric ($ adminUser ->auth_as ) ? $ adminUser ->auth_as : $ adminUser ->id ;
22+ $ impersonateUser = User::find ($ impersonateUserId );
23+ $ impersonateUserName = $ impersonateUser ->name ;
24+
25+ if (Auth::user ()->id === $ originalUserId ) {
26+ $ token = Str::random (60 );
27+ if (\Route::currentRouteName () !== 'authAs ' ) {
28+ $ adminUser ->remember_token = $ token ;
29+ $ adminUser ->save ();
30+ echo "<script>window.location.href = ' " . url ('studio/links ' ) . "';</script> " ;
31+ }
32+
33+ Auth::loginUsingId ($ impersonateUserId );
34+ $ request ->session ()->put ('display_auth_nav ' , $ token );
35+ $ request ->session ()->save ();
36+ }
1937
20- $ originalUser = $ adminUser ->id ;
21-
22- $ id = is_numeric ($ adminUser ->auth_as ) ? $ adminUser ->auth_as : $ adminUser ->id ;
23- $ user = User::find ($ id );
24-
25- $ name = $ user ->name ;
26-
27- if (Auth::user ()->id === $ originalUser ) {
28-
29- // Generate unique token
30- $ token = Str::random (60 );
31- if (\Route::currentRouteName () !== 'authAs ' ){
32- $ adminUser ->remember_token = $ token ;
33- $ adminUser ->save ();
34- echo "<script>window.location.href = ' " .url ('studio/links ' )."';</script> " ;
35- }
36-
37- Auth::loginUsingId ($ id );
38- $ request ->session ()->put ('display_auth_nav ' , $ token );
39- $ request ->session ()->save ();
40- }
41-
42- if ($ request ->session ()->has ('display_auth_nav ' )) {
43- $ dashboard = url ('dashboard ' );
44- $ URL = url ('/auth-as ' );
45- $ csrf = csrf_token ();
46- $ remember_token = User::find ($ originalUser );
47- $ token = $ remember_token ->remember_token ;
48- $ storageToken = $ request ->session ()->get ('display_auth_nav ' );
49- if ($ storageToken === $ token ) {
50- if (file_exists (base_path (findAvatar ($ id )))) {
51- $ img = '<img alt="avatar" class="iimg irounded" src=" ' . url (findAvatar ($ id )) . '"> ' ;
52- } elseif (file_exists (base_path ("assets/linkstack/images/ " ).findFile ('avatar ' ))) {
53- $ img = '<img alt="avatar" class="iimg irounded" src=" ' . url ("assets/linkstack/images/ " ) . "/ " . findFile ('avatar ' ) . '"> ' ;
54- } else {
55- $ img = '<img alt="avatar" class="iimg" src=" ' . asset ('assets/linkstack/images/logo.svg ' ) . '"> ' ;
56- }
57- $ customHtml =
58- <<<EOD
59-
38+ if ($ request ->session ()->has ('display_auth_nav ' )) {
39+ $ dashboardUrl = url ('dashboard ' );
40+ $ authAsUrl = url ('/auth-as ' );
41+ $ csrfToken = csrf_token ();
42+ $ rememberTokenUser = User::find ($ originalUserId );
43+ $ rememberToken = $ rememberTokenUser ->remember_token ;
44+ $ storageToken = $ request ->session ()->get ('display_auth_nav ' );
45+
46+ if ($ storageToken === $ rememberToken ) {
47+ if (file_exists (base_path (findAvatar ($ impersonateUserId )))) {
48+ $ avatarUrl = url (findAvatar ($ impersonateUserId ));
49+ } elseif (file_exists (base_path ("assets/linkstack/images/ " ) . findFile ('avatar ' ))) {
50+ $ avatarUrl = url ("assets/linkstack/images/ " ) . "/ " . findFile ('avatar ' );
51+ } else {
52+ $ avatarUrl = asset ('assets/linkstack/images/logo.svg ' );
53+ }
54+
55+ $ customHtml = <<<EOD
6056<style>
6157 .ibar {
6258 position: fixed;
@@ -117,7 +113,7 @@ public function handle($request, Closure $next)
117113<div class="ibar">
118114 <p class="itext1">
119115 <span>
120- <a href=" $ dashboard "> $ img $ name </a>
116+ <a href=" $ dashboardUrl ">< img alt="avatar" class="iimg irounded" src=" $ avatarUrl "> $ impersonateUserName </a>
121117 </span>
122118 <a style="cursor:pointer" onclick="document.getElementById('submitForm').submit(); return false;">
123119 <svg xmlns="http://www.w3.org/2000/svg" class="bi bi-x" viewBox="0 0 16 16">
@@ -129,33 +125,37 @@ public function handle($request, Closure $next)
129125 </p>
130126</div>
131127
132- <form id="submitForm" action=" $ URL " method="POST" style="display: none;">
133- <input type="hidden" name="_token" value=" $ csrf ">
134- <input type="hidden" name="token" value=" $ token ">
135- <input type="hidden" name="id" value=" $ originalUser ">
128+ <form id="submitForm" action=" $ authAsUrl " method="POST" style="display: none;">
129+ <input type="hidden" name="_token" value="$ csrfToken ">
130+ <input type="hidden" name="token" value="$ rememberToken ">
131+ <input type="hidden" name="id" value="$ originalUserId ">
136132</form>
137133
138134<script>
139135 function submitForm() {
140136 document.getElementById('submitForm').submit();
141137 }
142138</script>
143-
144- EOD ;;
145- } else {$ customHtml = "" ;}
146-
147- $ response = $ next ($ request );
148- $ content = $ response ->getContent ();
149- $ modifiedContent = preg_replace ('/<body([^>]*)>/ ' , "<body$1> {$ customHtml }" , $ content );
150- $ response ->setContent ($ modifiedContent );
151-
152- return $ response ;
153- } else {
154- if ($ request ->session ()->has ('display_auth_nav ' )) {
155- $ request ->session ()->forget ('display_auth_nav ' );
156- Auth::logout ();
139+ EOD ;
140+ } else {
141+ $ customHtml = "" ;
142+ }
143+
144+ $ response = $ next ($ request );
145+ $ content = $ response ->getContent ();
146+ $ modifiedContent = preg_replace ('/<body([^>]*)>/ ' , "<body$1> {$ customHtml }" , $ content );
147+ $ response ->setContent ($ modifiedContent );
148+
149+ return $ response ;
150+ } else {
151+ if ($ request ->session ()->has ('display_auth_nav ' )) {
152+ $ request ->session ()->forget ('display_auth_nav ' );
153+ Auth::logout ();
154+ }
155+ return $ next ($ request );
157156 }
157+ } else {
158158 return $ next ($ request );
159- }} else { return $ next ( $ request );}
159+ }
160160 }
161161}
0 commit comments