chore(easyAuth): redirect to last get request page
This commit is contained in:
parent
969a4505ed
commit
66a2845764
1 changed files with 26 additions and 11 deletions
37
easyauth.go
37
easyauth.go
|
@ -27,23 +27,20 @@ func NewEasyAuth(client Auth) (EasyAuth, error) {
|
|||
|
||||
func (e EasyAuth) GetUser(w http.ResponseWriter, r *http.Request) (AuthentikUser, bool, error) {
|
||||
if r.Method == http.MethodGet {
|
||||
SetCookie(w, "url", r.URL.String(), time.Now().Add(1*time.Minute))
|
||||
setCookie(w, "url", r.URL.String(), time.Now().Add(1*time.Minute))
|
||||
}
|
||||
cookie, err := r.Cookie("jwt")
|
||||
|
||||
cookieValue, err := getCookie(w, r, "jwt")
|
||||
if err != nil {
|
||||
if errors.Is(err, http.ErrNoCookie) {
|
||||
e.redirectAuth(w, r)
|
||||
return AuthentikUser{}, false, nil
|
||||
}
|
||||
return AuthentikUser{}, false, err
|
||||
}
|
||||
|
||||
if cookie.Value == "" {
|
||||
if cookieValue == "" {
|
||||
e.redirectAuth(w, r)
|
||||
return AuthentikUser{}, false, nil
|
||||
}
|
||||
|
||||
parsedAccessToken, _ := jwt.ParseWithClaims(cookie.Value, &UserClaims{}, func(token *jwt.Token) (interface{}, error) {
|
||||
parsedAccessToken, _ := jwt.ParseWithClaims(cookieValue, &UserClaims{}, func(token *jwt.Token) (interface{}, error) {
|
||||
return e.jwtSecret, nil
|
||||
})
|
||||
|
||||
|
@ -90,15 +87,33 @@ func (e EasyAuth) AuthHTTPHandler(w http.ResponseWriter, r *http.Request) {
|
|||
panic(err) // TODO: Deal with error
|
||||
}
|
||||
|
||||
SetCookie(w, "jwt", jwtString, expired)
|
||||
setCookie(w, "jwt", jwtString, expired)
|
||||
|
||||
_, err = w.Write([]byte("ok")) // TODO: Redirect to right page
|
||||
redirectURL, err := getCookie(w, r, "url")
|
||||
if err != nil {
|
||||
panic(err) // TODO: Deal with error
|
||||
}
|
||||
|
||||
if redirectURL == "" {
|
||||
redirectURL = "/"
|
||||
}
|
||||
|
||||
func SetCookie(w http.ResponseWriter, name, value string, expired time.Time) {
|
||||
http.Redirect(w, r, redirectURL, http.StatusTemporaryRedirect)
|
||||
}
|
||||
|
||||
func getCookie(w http.ResponseWriter, r *http.Request, name string) (string, error) {
|
||||
cookie, err := r.Cookie(name)
|
||||
if err != nil {
|
||||
if errors.Is(err, http.ErrNoCookie) {
|
||||
return "", nil
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
|
||||
return cookie.Value, nil
|
||||
}
|
||||
|
||||
func setCookie(w http.ResponseWriter, name, value string, expired time.Time) {
|
||||
cookie := http.Cookie{}
|
||||
cookie.Name = name
|
||||
cookie.Value = value
|
||||
|
|
Loading…
Reference in a new issue