github.com/vnforks/kid@v5.11.1+incompatible/model/token.go (about) 1 // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package model 5 6 import "net/http" 7 8 const ( 9 TOKEN_SIZE = 64 10 MAX_TOKEN_EXIPRY_TIME = 1000 * 60 * 60 * 48 // 48 hour 11 TOKEN_TYPE_OAUTH = "oauth" 12 ) 13 14 type Token struct { 15 Token string 16 CreateAt int64 17 Type string 18 Extra string 19 } 20 21 func NewToken(tokentype, extra string) *Token { 22 return &Token{ 23 Token: NewRandomString(TOKEN_SIZE), 24 CreateAt: GetMillis(), 25 Type: tokentype, 26 Extra: extra, 27 } 28 } 29 30 func (t *Token) IsValid() *AppError { 31 if len(t.Token) != TOKEN_SIZE { 32 return NewAppError("Token.IsValid", "model.token.is_valid.size", nil, "", http.StatusInternalServerError) 33 } 34 35 if t.CreateAt == 0 { 36 return NewAppError("Token.IsValid", "model.token.is_valid.expiry", nil, "", http.StatusInternalServerError) 37 } 38 39 return nil 40 }