feat: secrets file

This commit is contained in:
Stavros
2025-01-26 19:48:53 +02:00
parent 3b50d9303b
commit 94f7debb10
5 changed files with 86 additions and 51 deletions

View File

@@ -31,7 +31,7 @@ func (auth *Auth) GetUser(username string) *types.User {
}
func (auth *Auth) CheckPassword(user types.User, password string) bool {
hashedPasswordErr := bcrypt.CompareHashAndPassword([]byte(user.Username), []byte(password))
hashedPasswordErr := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
return hashedPasswordErr == nil
}

View File

@@ -19,26 +19,29 @@ type User struct {
type Users []User
type Config struct {
Port int `validate:"number" mapstructure:"port"`
Address string `mapstructure:"address, ip4_addr"`
Secret string `validate:"required,len=32" mapstructure:"secret"`
AppURL string `validate:"required,url" mapstructure:"app-url"`
Users string `mapstructure:"users"`
UsersFile string `mapstructure:"users-file"`
CookieSecure bool `mapstructure:"cookie-secure"`
GithubClientId string `mapstructure:"github-client-id"`
GithubClientSecret string `mapstructure:"github-client-secret"`
GoogleClientId string `mapstructure:"google-client-id"`
GoogleClientSecret string `mapstructure:"google-client-secret"`
GenericClientId string `mapstructure:"generic-client-id"`
GenericClientSecret string `mapstructure:"generic-client-secret"`
GenericScopes string `mapstructure:"generic-scopes"`
GenericAuthURL string `mapstructure:"generic-auth-url"`
GenericTokenURL string `mapstructure:"generic-token-url"`
GenericUserURL string `mapstructure:"generic-user-info-url"`
DisableContinue bool `mapstructure:"disable-continue"`
OAuthWhitelist string `mapstructure:"oauth-whitelist"`
CookieExpiry int `mapstructure:"cookie-expiry"`
Port int `validate:"number" mapstructure:"port"`
Address string `mapstructure:"address, ip4_addr"`
Secret string `validate:"required,len=32" mapstructure:"secret"`
AppURL string `validate:"required,url" mapstructure:"app-url"`
Users string `mapstructure:"users"`
UsersFile string `mapstructure:"users-file"`
CookieSecure bool `mapstructure:"cookie-secure"`
GithubClientId string `mapstructure:"github-client-id"`
GithubClientSecret string `mapstructure:"github-client-secret"`
GithubClientSecretFile string `mapstructure:"github-client-secret-file"`
GoogleClientId string `mapstructure:"google-client-id"`
GoogleClientSecret string `mapstructure:"google-client-secret"`
GoogleClientSecretFile string `mapstructure:"google-client-secret-file"`
GenericClientId string `mapstructure:"generic-client-id"`
GenericClientSecret string `mapstructure:"generic-client-secret"`
GenericClientSecretFile string `mapstructure:"generic-client-secret-file"`
GenericScopes string `mapstructure:"generic-scopes"`
GenericAuthURL string `mapstructure:"generic-auth-url"`
GenericTokenURL string `mapstructure:"generic-token-url"`
GenericUserURL string `mapstructure:"generic-user-info-url"`
DisableContinue bool `mapstructure:"disable-continue"`
OAuthWhitelist string `mapstructure:"oauth-whitelist"`
CookieExpiry int `mapstructure:"cookie-expiry"`
}
type UserContext struct {

View File

@@ -44,14 +44,14 @@ func GetRootURL(urlSrc string) (string, error) {
return urlFinal, nil
}
func GetUsersFromFile(usersFile string) (string, error) {
_, statErr := os.Stat(usersFile)
func ReadFile(file string) (string, error) {
_, statErr := os.Stat(file)
if statErr != nil {
return "", statErr
}
data, readErr := os.ReadFile(usersFile)
data, readErr := os.ReadFile(file)
if readErr != nil {
return "", readErr
@@ -75,9 +75,43 @@ func ParseFileToLine(content string) string {
return strings.Join(users, ",")
}
func ParseCommaString(str string) []string {
if str == "" {
return []string{}
func GetSecret(env string, file string) string {
if env == "" && file == "" {
return ""
}
return strings.Split(str, ",")
if env != "" {
return env
}
contents, err := ReadFile(file)
if err != nil {
return ""
}
return contents
}
func GetUsers(env string, file string) (types.Users, error) {
var users string
if env == "" && file == "" {
return types.Users{}, errors.New("no users provided")
}
if env != "" {
users += env
}
if file != "" {
fileContents, fileErr := ReadFile(file)
if fileErr == nil {
users += ","
users += ParseFileToLine(fileContents)
}
}
return ParseUsers(users)
}