File tree Expand file tree Collapse file tree 1 file changed +20
-7
lines changed Expand file tree Collapse file tree 1 file changed +20
-7
lines changed Original file line number Diff line number Diff line change @@ -199,14 +199,27 @@ function isAsync() {
199199}
200200
201201function _extractRolesFromAccessToken ( accessToken ) {
202- let result = [ ] ;
203- if ( accessToken ) {
204- const decodedToken = JSON . parse ( atob ( accessToken . split ( '.' ) [ 1 ] ) ) ;
205- if ( decodedToken ?. roles ) {
206- result = decodedToken ?. roles ;
207- }
202+ if ( ! accessToken ) {
203+ console . error ( "Can't extract user roles: access token is null or undefined" ) ;
204+ return [ ] ;
205+ }
206+
207+ const tokenPayload = accessToken . split ( '.' ) [ 1 ] ;
208+ if ( ! tokenPayload ) {
209+ console . error ( "Can't extract user roles: access token is ill-formed" ) ;
210+ console . error ( accessToken ) ;
211+ return [ ] ;
212+ }
213+
214+ try {
215+ const decoded = atob ( tokenPayload . replace ( / - / g, '+' ) . replace ( / _ / g, '/' ) ) ;
216+ const parsed = JSON . parse ( decoded ) ;
217+ return parsed ?. roles ?? [ ] ;
218+ } catch ( e ) {
219+ console . error ( "Can't extract user roles: failed to decode and parse access token" ) ;
220+ console . error ( accessToken ) ;
221+ return [ ] ;
208222 }
209- return result ;
210223}
211224
212225async function isUserSignedIn ( ) {
You can’t perform that action at this time.
0 commit comments