Skip to content

Commit

Permalink
feat: allow user set cookie options
Browse files Browse the repository at this point in the history
  • Loading branch information
soulteary committed Apr 11, 2024
1 parent 1f43d2d commit 38b4846
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 6 deletions.
12 changes: 12 additions & 0 deletions cmd/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ func GetCliFlags() (*FlareModel.Flags, *flags.FlagSet) {
// 其他
options.BoolVarP(&cliFlags.ShowVersion, "version", "v", false, "显示应用版本号")
options.BoolVarP(&cliFlags.ShowHelp, "help", "h", false, "显示帮助")
// Cookie
options.StringVarP(&cliFlags.CookieName, _KEY_COOKIE_NAME, _KEY_COOKIE_NAME_SHORT, FlareDefine.DEFAULT_COOKIE_NAME, "调整 Cookie 字段名称")
options.StringVarP(&cliFlags.CookieSecret, _KEY_COOKIE_SECRET, _KEY_COOKIE_SECRET_SHORT, FlareDefine.DEFAULT_COOKIE_SECRET, "调整 Cookie 密钥")

_ = options.Parse(os.Args)

Expand Down Expand Up @@ -130,6 +133,15 @@ func parseCLI(baseFlags FlareModel.Flags) FlareModel.Flags {
baseFlags.EnableEditor = cliFlags.EnableEditor
}

// 设置 Cookie 相关信息
if CheckFlagsExists(keys, []string{_KEY_COOKIE_NAME, _KEY_COOKIE_NAME_SHORT}) {
baseFlags.CookieName = cliFlags.CookieName
}

if CheckFlagsExists(keys, []string{_KEY_COOKIE_SECRET, _KEY_COOKIE_SECRET_SHORT}) {
baseFlags.CookieSecret = cliFlags.CookieSecret
}

// Forcibly disable `debug mode` in non-development mode
if strings.ToLower(version.Version) != "dev" {
baseFlags.DebugMode = false
Expand Down
6 changes: 6 additions & 0 deletions cmd/define.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,10 @@ const (

_KEY_DISABLE_CSP = "disable_csp"
_KEY_DISABLE_CSP_SHORT = "c"

_KEY_COOKIE_NAME = "cookie_name"
_KEY_COOKIE_NAME_SHORT = "k"

_KEY_COOKIE_SECRET = "cookie_secret"
_KEY_COOKIE_SECRET_SHORT = "r"
)
2 changes: 2 additions & 0 deletions cmd/envfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ func ParseEnvFile(baseFlags FlareModel.Flags) FlareModel.Flags {
baseFlags.EnableEditor = GetDotEnvFileBoolOrDefault(envs, "FLARE_EDITOR", baseFlags.EnableEditor)
baseFlags.EnableGuide = GetDotEnvFileBoolOrDefault(envs, "FLARE_GUIDE", baseFlags.EnableGuide)
baseFlags.Visibility = GetDotEnvFileStringOrDefault(envs, "FLARE_VISIBILITY", baseFlags.Visibility)
baseFlags.CookieName = GetDotEnvFileStringOrDefault(envs, "FLARE_COOKIE_NAME", baseFlags.CookieName)
baseFlags.CookieSecret = GetDotEnvFileStringOrDefault(envs, "FLARE_COOKIE_SECRET", baseFlags.CookieSecret)

return baseFlags
}
6 changes: 6 additions & 0 deletions config/define/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ const (
DEFAULT_ENABLE_EDITOR = true
DEFAULT_VISIBILITY = "DEFAULT"
DEFAULT_DISABLE_CSP = false

DEFAULT_COOKIE_NAME = "flare"
DEFAULT_COOKIE_SECRET = "secret"
)

// get default env config
Expand All @@ -32,6 +35,9 @@ func GetDefaultEnvVars() FlareModel.Envs {

User: DEFAULT_USER_NAME,
Pass: "",

CookieName: DEFAULT_COOKIE_NAME,
CookieSecret: DEFAULT_COOKIE_SECRET,
}
}

Expand Down
9 changes: 9 additions & 0 deletions config/model/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ type Flags struct {
Pass string
UserIsGenerated bool
PassIsGenerated bool

CookieName string
CookieSecret string
}

// Application Envs Data Model
Expand All @@ -36,6 +39,9 @@ type Envs struct {
DisableLoginMode bool `env:"FLARE_DISABLE_LOGIN"`
User string `env:"FLARE_USER,unset"`
Pass string `env:"FLARE_PASS,unset"`

CookieName string `env:"FLARE_COOKIE_NAME"`
CookieSecret string `env:"FLARE_COOKIE_SECRET"`
}

// Application Envfile Data Model
Expand All @@ -52,4 +58,7 @@ type EnvFile struct {
DisableLoginMode bool `ini:"FLARE_DISABLE_LOGIN,omitempty"`
User string `ini:"FLARE_USER,omitempty"`
Pass string `ini:"FLARE_PASS,omitempty"`

CookieName string `ini:"FLARE_COOKIE_NAME,omitempty"`
CookieSecret string `ini:"FLARE_COOKIE_SECRET,omitempty"`
}
9 changes: 3 additions & 6 deletions internal/auth/auth.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package auth

import (
"fmt"
"net/http"
"strconv"
"strings"
"time"

Expand All @@ -19,11 +19,8 @@ const (
)

func RequestHandle(router *gin.Engine) {
// 共享 store
// TODO: 剥离逻辑
// TODO:替换密钥为用户相关数据
store := cookie.NewStore([]byte("secret"))
router.Use(sessions.Sessions("flare_"+strconv.Itoa(FlareDefine.AppFlags.Port), store))
store := cookie.NewStore([]byte(FlareDefine.AppFlags.CookieSecret))
router.Use(sessions.Sessions(fmt.Sprintf("%s_%d", FlareDefine.AppFlags.CookieName, FlareDefine.AppFlags.Port), store))

// 非离线模式注册路由
if !FlareDefine.AppFlags.DisableLoginMode {
Expand Down

0 comments on commit 38b4846

Please sign in to comment.