github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/model/token.go (about)

     1  package model
     2  
     3  import (
     4  	"net/http"
     5  )
     6  
     7  const (
     8  	TOKEN_SIZE            = 64
     9  	MAX_TOKEN_EXPIRY_TIME = 1000 * 60 * 60 * 48 // 48 hour
    10  	TOKEN_TYPE_OAUTH      = "oauth"
    11  )
    12  
    13  type Token struct {
    14  	Token    string
    15  	CreateAt int64
    16  	Type     string
    17  	Extra    string
    18  }
    19  
    20  func NewToken(tokentype, extra string) *Token {
    21  	return &Token{
    22  		Token:    NewRandomString(TOKEN_SIZE),
    23  		CreateAt: GetMillis(),
    24  		Type:     tokentype,
    25  		Extra:    extra,
    26  	}
    27  }
    28  
    29  func (t *Token) IsValid() *AppError {
    30  	if len(t.Token) != TOKEN_SIZE {
    31  		return NewAppError("Token.IsValid", "model.token.is_valid.size", nil, "", http.StatusInternalServerError)
    32  	}
    33  
    34  	if t.CreateAt == 0 {
    35  		return NewAppError("Token.IsValid", "model.token.is_valid.expiry", nil, "", http.StatusInternalServerError)
    36  	}
    37  
    38  	return nil
    39  }