@@ -217,7 +217,7 @@ func (ts *JWTokenService) ValidateTokenString(tstr string, v jwtValidator.Valida
217217// NewAccessToken creates new access token for user.
218218func (ts * JWTokenService ) NewAccessToken (
219219 user model.User ,
220- scopes [] string ,
220+ scopes model. AllowedScopesSet ,
221221 app model.AppData ,
222222 requireTFA bool ,
223223 tokenPayload map [string ]interface {},
@@ -235,10 +235,11 @@ func (ts *JWTokenService) NewAccessToken(
235235 payload [PayloadName ] = user .Username
236236 }
237237
238- tokenType := model . TokenTypeAccess
238+ scopesStr := scopes . String ()
239239 if requireTFA {
240- scopes = [] string { model .TokenTypeTFAPreauth }
240+ scopesStr = model .TokenTypeTFAPreauth
241241 }
242+
242243 if len (tokenPayload ) > 0 {
243244 for k , v := range tokenPayload {
244245 payload [k ] = v
@@ -253,9 +254,9 @@ func (ts *JWTokenService) NewAccessToken(
253254 }
254255
255256 claims := & model.Claims {
256- Scopes : strings . Join ( scopes , " " ) ,
257+ Scopes : scopesStr ,
257258 Payload : payload ,
258- Type : tokenType ,
259+ Type : model . TokenTypeAccess ,
259260 StandardClaims : jwt.StandardClaims {
260261 ExpiresAt : (now + lifespan ),
261262 Issuer : ts .issuer ,
@@ -278,22 +279,27 @@ func (ts *JWTokenService) NewAccessToken(
278279}
279280
280281// NewRefreshToken creates new refresh token.
281- func (ts * JWTokenService ) NewRefreshToken (u model.User , scopes []string , app model.AppData ) (model.Token , error ) {
282+ func (ts * JWTokenService ) NewRefreshToken (
283+ user model.User ,
284+ scopes model.AllowedScopesSet ,
285+ app model.AppData ,
286+ ) (model.Token , error ) {
282287 if ! app .Active || ! app .Offline {
283288 return nil , ErrInvalidApp
284289 }
290+
285291 // no offline request
286- if ! model . SliceContains ( scopes , model .OfflineScope ) {
292+ if ! scopes . Contains ( model .OfflineScope ) {
287293 return nil , ErrInvalidOfflineScope
288294 }
289295
290- if ! u .Active {
296+ if ! user .Active {
291297 return nil , ErrInvalidUser
292298 }
293299
294300 payload := make (map [string ]interface {})
295301 if model .SliceContains (app .TokenPayload , PayloadName ) {
296- payload [PayloadName ] = u .Username
302+ payload [PayloadName ] = user .Username
297303 }
298304 now := ijwt .TimeFunc ().Unix ()
299305
@@ -303,13 +309,13 @@ func (ts *JWTokenService) NewRefreshToken(u model.User, scopes []string, app mod
303309 }
304310
305311 claims := & model.Claims {
306- Scopes : strings . Join ( scopes , " " ),
312+ Scopes : scopes . String ( ),
307313 Payload : payload ,
308314 Type : model .TokenTypeRefresh ,
309315 StandardClaims : jwt.StandardClaims {
310316 ExpiresAt : (now + lifespan ),
311317 Issuer : ts .issuer ,
312- Subject : u .ID ,
318+ Subject : user .ID ,
313319 Audience : app .ID ,
314320 IssuedAt : now ,
315321 },
@@ -338,7 +344,10 @@ func (ts *JWTokenService) NewRefreshToken(u model.User, scopes []string, app mod
338344}
339345
340346// RefreshAccessToken issues new access token for provided refresh token.
341- func (ts * JWTokenService ) RefreshAccessToken (refreshToken model.Token , tokenPayload map [string ]interface {}) (model.Token , error ) {
347+ func (ts * JWTokenService ) RefreshAccessToken (
348+ refreshToken model.Token ,
349+ tokenPayload map [string ]interface {},
350+ ) (model.Token , error ) {
342351 rt , ok := refreshToken .(* model.JWToken )
343352 if ! ok || rt == nil {
344353 return nil , model .ErrTokenInvalid
0 commit comments