ui: fix default values for authorization parameters

This commit is contained in:
Alexander Baryshnikov 2020-10-01 21:49:06 +08:00
parent f30fa7d166
commit 143d907bef
2 changed files with 38 additions and 16 deletions

View File

@ -3,6 +3,7 @@ package server
import ( import (
"errors" "errors"
"net/http" "net/http"
"sort"
"github.com/dgrijalva/jwt-go" "github.com/dgrijalva/jwt-go"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -46,11 +47,15 @@ type JWT struct {
Secret string `yaml:"secret"` // key to verify JWT Secret string `yaml:"secret"` // key to verify JWT
} }
func (cfg JWT) Create() AuthHandlerFunc { func (cfg JWT) GetHeader() string {
header := cfg.Header if cfg.Header == "" {
if header == "" { return "Authorization"
header = "Authorization"
} }
return cfg.Header
}
func (cfg JWT) Create() AuthHandlerFunc {
header := cfg.GetHeader()
return func(req *http.Request) bool { return func(req *http.Request) bool {
rawToken := req.Header.Get(header) rawToken := req.Header.Get(header)
@ -69,11 +74,15 @@ type QueryToken struct {
Tokens []string `yaml:"tokens"` // allowed tokens Tokens []string `yaml:"tokens"` // allowed tokens
} }
func (cfg QueryToken) Create() AuthHandlerFunc { func (cfg QueryToken) GetParam() string {
param := cfg.Param if cfg.Param == "" {
if param == "" { return "token"
param = "token"
} }
return cfg.Param
}
func (cfg QueryToken) Create() AuthHandlerFunc {
param := cfg.GetParam()
tokens := map[string]bool{} tokens := map[string]bool{}
for _, k := range cfg.Tokens { for _, k := range cfg.Tokens {
tokens[k] = true tokens[k] = true
@ -89,11 +98,15 @@ type HeaderToken struct {
Tokens []string `yaml:"tokens"` // allowed tokens Tokens []string `yaml:"tokens"` // allowed tokens
} }
func (cfg HeaderToken) Create() AuthHandlerFunc { func (cfg HeaderToken) GetHeader() string {
header := cfg.Header if cfg.Header == "" {
if header == "" { return "X-Api-Token"
header = "X-Api-Token"
} }
return cfg.Header
}
func (cfg HeaderToken) Create() AuthHandlerFunc {
header := cfg.GetHeader()
tokens := map[string]bool{} tokens := map[string]bool{}
for _, k := range cfg.Tokens { for _, k := range cfg.Tokens {
tokens[k] = true tokens[k] = true
@ -121,3 +134,12 @@ func (cfg Basic) Create() AuthHandlerFunc {
return bcrypt.CompareHashAndPassword([]byte(h), []byte(p)) == nil return bcrypt.CompareHashAndPassword([]byte(h), []byte(p)) == nil
} }
} }
func (cfg Basic) Logins() []string {
var ans []string
for name := range cfg.Users {
ans = append(ans, name)
}
sort.Strings(ans)
return ans
}

View File

@ -121,27 +121,27 @@
{{if .JWT.Enable}} {{if .JWT.Enable}}
<dt class="col-sm-3">JWT</dt> <dt class="col-sm-3">JWT</dt>
<dd class="col-sm-9">in <dd class="col-sm-9">in
<code>{{.JWT.Header}}</code> <code>{{.JWT.GetHeader}}</code>
header header
</dd> </dd>
{{end}} {{end}}
{{if .QueryToken.Enable}} {{if .QueryToken.Enable}}
<dt class="col-sm-3">Query token</dt> <dt class="col-sm-3">Query token</dt>
<dd class="col-sm-9">in <dd class="col-sm-9">in
<code>{{.QueryToken.Param}}</code> <code>{{.QueryToken.GetParam}}</code>
param param
</dd> </dd>
{{end}} {{end}}
{{if .HeaderToken.Enable}} {{if .HeaderToken.Enable}}
<dt class="col-sm-3">Header token</dt> <dt class="col-sm-3">Header token</dt>
<dd class="col-sm-9">in <dd class="col-sm-9">in
<code>{{.HeaderToken.Header}}</code> <code>{{.HeaderToken.GetHeader}}</code>
header header
</dd> </dd>
{{end}} {{end}}
{{if .Basic.Enable}} {{if .Basic.Enable}}
<dt class="col-sm-3">Basic</dt> <dt class="col-sm-3">Basic</dt>
<dd class="col-sm-9">{{.Basic.Users | keys | join ", "}}</dd> <dd class="col-sm-9">{{.Basic.Logins | join ", "}}</dd>
{{end}} {{end}}
</dl> </dl>
{{end}} {{end}}