mirror of
https://github.com/weloe/token-go.git
synced 2025-10-06 16:07:18 +08:00
feat: add config
This commit is contained in:
19
config/cookie.go
Normal file
19
config/cookie.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package config
|
||||
|
||||
type cookieConfig struct {
|
||||
Domain string
|
||||
Path string
|
||||
Secure bool
|
||||
HttpOnly bool
|
||||
SameSite string
|
||||
}
|
||||
|
||||
func DefaultCookieConfig() *cookieConfig {
|
||||
return &cookieConfig{
|
||||
Domain: "",
|
||||
Path: "",
|
||||
Secure: false,
|
||||
HttpOnly: false,
|
||||
SameSite: "",
|
||||
}
|
||||
}
|
37
config/reader.go
Normal file
37
config/reader.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package config
|
||||
|
||||
import "reflect"
|
||||
|
||||
type ConfigInterface interface {
|
||||
LoadTokenConfig(conf string) (*tokenConfig, error)
|
||||
}
|
||||
|
||||
var _ ConfigInterface = (*FileConfig)(nil)
|
||||
|
||||
type FileConfig struct {
|
||||
TokenConfig *tokenConfig
|
||||
}
|
||||
|
||||
func (c *FileConfig) LoadTokenConfig(conf string) (*tokenConfig, error) {
|
||||
//TODO implement me
|
||||
return &tokenConfig{}, nil
|
||||
}
|
||||
|
||||
func (c *FileConfig) parse(confName string) (err error) {
|
||||
c.TokenConfig, err = c.LoadTokenConfig(confName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if reflect.DeepEqual(c.TokenConfig, &tokenConfig{}) {
|
||||
c.TokenConfig = DefaultTokenConfig()
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// NewConfig create from file.
|
||||
func NewConfig(confName string) (ConfigInterface, error) {
|
||||
c := &FileConfig{}
|
||||
err := c.parse(confName)
|
||||
return c, err
|
||||
}
|
21
config/reader_test.go
Normal file
21
config/reader_test.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package config
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestNewConfig(t *testing.T) {
|
||||
config, err := NewConfig("")
|
||||
if err != nil {
|
||||
t.Fatalf("read error: %v", err)
|
||||
}
|
||||
t.Log(config)
|
||||
}
|
||||
|
||||
func TestDefaultCookieConfig(t *testing.T) {
|
||||
config := DefaultTokenConfig()
|
||||
t.Log(config)
|
||||
}
|
||||
|
||||
func TestDefaultTokenConfig(t *testing.T) {
|
||||
config := DefaultCookieConfig()
|
||||
t.Log(config)
|
||||
}
|
68
config/token.go
Normal file
68
config/token.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package config
|
||||
|
||||
type tokenConfig struct {
|
||||
// TokenName prefix
|
||||
TokenStyle string
|
||||
TokenPrefix string
|
||||
TokenName string
|
||||
|
||||
Timeout int64
|
||||
ActivityTimeout int64
|
||||
// Data clean period
|
||||
DataRefreshPeriod int64
|
||||
// Auto refresh token
|
||||
AutoRenew bool
|
||||
|
||||
// Allow multi login
|
||||
IsConcurrent bool
|
||||
IsShare bool
|
||||
// If (IsConcurrent == true && IsShare == false), support MaxLoginCount
|
||||
MaxLoginCount int16
|
||||
|
||||
// Read token method
|
||||
// Set to true to read token from these method before login.
|
||||
IsReadBody bool
|
||||
IsReadHeader bool
|
||||
IsReadCookie bool
|
||||
|
||||
// Write token to response header.
|
||||
// Set to true to write after login.
|
||||
IsWriteHeader bool
|
||||
|
||||
TokenSessionCheckLogin bool
|
||||
|
||||
JwtSecretKey string
|
||||
|
||||
CurDomain string
|
||||
|
||||
SameTokenTimeout int64
|
||||
|
||||
CheckSameToken bool
|
||||
|
||||
CookieConfig *cookieConfig
|
||||
}
|
||||
|
||||
func DefaultTokenConfig() *tokenConfig {
|
||||
return &tokenConfig{
|
||||
TokenStyle: "uuid",
|
||||
TokenPrefix: "",
|
||||
TokenName: "tokenGo",
|
||||
Timeout: 60 * 60 * 24 * 30,
|
||||
ActivityTimeout: -1,
|
||||
DataRefreshPeriod: 30,
|
||||
AutoRenew: true,
|
||||
IsConcurrent: true,
|
||||
IsShare: true,
|
||||
MaxLoginCount: 12,
|
||||
IsReadBody: true,
|
||||
IsReadHeader: true,
|
||||
IsReadCookie: true,
|
||||
IsWriteHeader: false,
|
||||
TokenSessionCheckLogin: true,
|
||||
JwtSecretKey: "",
|
||||
CurDomain: "",
|
||||
SameTokenTimeout: 60 * 60 * 24,
|
||||
CheckSameToken: false,
|
||||
CookieConfig: DefaultCookieConfig(),
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user