mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2025-10-29 05:05:42 +00:00
feat: add basic header authorization
This commit is contained in:
@@ -73,7 +73,7 @@ func (auth *Auth) DeleteSessionCookie(c *gin.Context) {
|
|||||||
sessions.Save()
|
sessions.Save()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (auth *Auth) GetSessionCookie(c *gin.Context) (types.SessionCookie, error) {
|
func (auth *Auth) GetSessionCookie(c *gin.Context) types.SessionCookie {
|
||||||
log.Debug().Msg("Getting session cookie")
|
log.Debug().Msg("Getting session cookie")
|
||||||
sessions := sessions.Default(c)
|
sessions := sessions.Default(c)
|
||||||
|
|
||||||
@@ -87,13 +87,13 @@ func (auth *Auth) GetSessionCookie(c *gin.Context) (types.SessionCookie, error)
|
|||||||
|
|
||||||
if !usernameOk || !providerOk || !expiryOk {
|
if !usernameOk || !providerOk || !expiryOk {
|
||||||
log.Warn().Msg("Session cookie invalid")
|
log.Warn().Msg("Session cookie invalid")
|
||||||
return types.SessionCookie{}, nil
|
return types.SessionCookie{}
|
||||||
}
|
}
|
||||||
|
|
||||||
if time.Now().Unix() > expiry {
|
if time.Now().Unix() > expiry {
|
||||||
log.Warn().Msg("Session cookie expired")
|
log.Warn().Msg("Session cookie expired")
|
||||||
auth.DeleteSessionCookie(c)
|
auth.DeleteSessionCookie(c)
|
||||||
return types.SessionCookie{}, nil
|
return types.SessionCookie{}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debug().Str("username", username).Str("provider", provider).Int64("expiry", expiry).Msg("Parsed cookie")
|
log.Debug().Str("username", username).Str("provider", provider).Int64("expiry", expiry).Msg("Parsed cookie")
|
||||||
@@ -101,7 +101,7 @@ func (auth *Auth) GetSessionCookie(c *gin.Context) (types.SessionCookie, error)
|
|||||||
return types.SessionCookie{
|
return types.SessionCookie{
|
||||||
Username: username,
|
Username: username,
|
||||||
Provider: provider,
|
Provider: provider,
|
||||||
}, nil
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (auth *Auth) UserAuthConfigured() bool {
|
func (auth *Auth) UserAuthConfigured() bool {
|
||||||
@@ -164,3 +164,32 @@ func (auth *Auth) ResourceAllowed(context types.UserContext, host string) (bool,
|
|||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (auth *Auth) GetBasicAuth(c *gin.Context) types.User {
|
||||||
|
header := c.GetHeader("Authorization")
|
||||||
|
|
||||||
|
if header == "" {
|
||||||
|
return types.User{}
|
||||||
|
}
|
||||||
|
|
||||||
|
headerSplit := strings.Split(header, " ")
|
||||||
|
|
||||||
|
if len(headerSplit) != 2 {
|
||||||
|
return types.User{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if headerSplit[0] != "Basic" {
|
||||||
|
return types.User{}
|
||||||
|
}
|
||||||
|
|
||||||
|
credentials := strings.Split(headerSplit[1], ":")
|
||||||
|
|
||||||
|
if len(credentials) != 2 {
|
||||||
|
return types.User{}
|
||||||
|
}
|
||||||
|
|
||||||
|
return types.User{
|
||||||
|
Username: credentials[0],
|
||||||
|
Password: credentials[1],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,16 +22,21 @@ type Hooks struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (hooks *Hooks) UseUserContext(c *gin.Context) types.UserContext {
|
func (hooks *Hooks) UseUserContext(c *gin.Context) types.UserContext {
|
||||||
cookie, cookiErr := hooks.Auth.GetSessionCookie(c)
|
cookie := hooks.Auth.GetSessionCookie(c)
|
||||||
|
basic := hooks.Auth.GetBasicAuth(c)
|
||||||
|
|
||||||
if cookiErr != nil {
|
if basic.Username != "" {
|
||||||
log.Error().Err(cookiErr).Msg("Failed to get session cookie")
|
log.Debug().Msg("Got basic auth")
|
||||||
return types.UserContext{
|
user := hooks.Auth.GetUser(basic.Username)
|
||||||
Username: "",
|
if user != nil && hooks.Auth.CheckPassword(*user, basic.Password) {
|
||||||
IsLoggedIn: false,
|
return types.UserContext{
|
||||||
OAuth: false,
|
Username: basic.Username,
|
||||||
Provider: "",
|
IsLoggedIn: true,
|
||||||
|
OAuth: false,
|
||||||
|
Provider: "",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if cookie.Provider == "username" {
|
if cookie.Provider == "username" {
|
||||||
|
|||||||
Reference in New Issue
Block a user