fix: add unauthorized instead of sending to a loop
This commit is contained in:
parent
3920b8913d
commit
7b7bebe701
1
main.go
1
main.go
@ -62,6 +62,7 @@ func main() {
|
||||
|
||||
http.Handle("/oauth/callback", oauthStore.CallbackHandler())
|
||||
http.Handle("/oauth/login", oauthStore.LoginPage())
|
||||
http.Handle("/oauth/unauthorized", oauthStore.UnauthorizedPage())
|
||||
protectedRoot := false
|
||||
for _, pattern := range config.GuardedPaths {
|
||||
if pattern == "/" {
|
||||
|
17
oauth.go
17
oauth.go
@ -84,6 +84,11 @@ func (s *OAuthStore) DeleteSession(sessionID string) {
|
||||
func sendToLoginPage(w http.ResponseWriter, r *http.Request) {
|
||||
http.Redirect(w, r, "/oauth/login", http.StatusTemporaryRedirect)
|
||||
}
|
||||
|
||||
func sendToUnauthorized(w http.ResponseWriter, r *http.Request) {
|
||||
http.Redirect(w, r, "/oauth/unauthorized", http.StatusTemporaryRedirect)
|
||||
}
|
||||
|
||||
func generateRandomToken() string {
|
||||
b := make([]byte, 32)
|
||||
rand.Read(b)
|
||||
@ -93,6 +98,16 @@ func generateRandomToken() string {
|
||||
//go:embed templates/LoginPage.html
|
||||
var loginPageContent string
|
||||
|
||||
//go:embed templates/NotAuthorizedPage.html
|
||||
var unauthorizedPageContent string
|
||||
|
||||
func (s *OAuthStore) UnauthorizedPage() http.Handler {
|
||||
unauthorizedPageTemplate := template.Must(template.New("unauthorizedPageContent").Parse(unauthorizedPageContent))
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
unauthorizedPageTemplate.Execute(w, nil)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *OAuthStore) LoginPage() http.Handler {
|
||||
|
||||
loginPageTemplate := template.Must(template.New("loginPageContent").Parse(loginPageContent))
|
||||
@ -156,7 +171,7 @@ func (s *OAuthStore) Protected(next http.Handler) http.Handler {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
sendToLoginPage(w, r)
|
||||
sendToUnauthorized(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
|
77
templates/NotAuthorizedPage.html
Normal file
77
templates/NotAuthorizedPage.html
Normal file
@ -0,0 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Unauthorized</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.login-container {
|
||||
background: white;
|
||||
padding: 3rem;
|
||||
border-radius: 16px;
|
||||
max-width: 400px;
|
||||
width: 90%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.login-button {
|
||||
background: #4c4c4c;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 16px 32px;
|
||||
border-radius: 12px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
text-decoration: none;
|
||||
min-width: 200px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.login-button:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.login-button:active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.lock-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #333;
|
||||
margin-bottom: 2rem;
|
||||
font-weight: 300;
|
||||
font-size: 2rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="login-container">
|
||||
<h1>Unauthorized</h1>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
x
Reference in New Issue
Block a user