mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
login
This commit is contained in:
parent
eccd383c1c
commit
e2d80af81d
@ -26,11 +26,11 @@
|
|||||||
<img src="./static/graphicarts/anchor.svg" alt="">
|
<img src="./static/graphicarts/anchor.svg" alt="">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="username">Username</label>
|
<label for="username">Username</label>
|
||||||
<input class="form-control" id="username">
|
<input name="username" class="form-control" id="username" autocomplete="off">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password">Password</label>
|
<label for="password">Password</label>
|
||||||
<input class="form-control" id="password" type="password">
|
<input name="password" class="form-control" id="password" type="password">
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-block btn-default" type="submit">Login</button>
|
<button class="btn btn-block btn-default" type="submit">Login</button>
|
||||||
</form>
|
</form>
|
||||||
|
@ -2,6 +2,8 @@ package server
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"crypto/subtle"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -18,5 +20,11 @@ func userIsAuthenticated(req *http.Request, username, password string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func userAuthenticate(rw http.ResponseWriter, username, password string) {
|
func userAuthenticate(rw http.ResponseWriter, username, password string) {
|
||||||
|
expires := time.Now().Add(time.Hour * 24 * 7) // 1 week
|
||||||
|
cookie := http.Cookie{Name: "auth", Value: username, Expires: expires}
|
||||||
|
http.SetCookie(rw, &cookie)
|
||||||
|
}
|
||||||
|
|
||||||
|
func safeCompare(p1, p2 string) bool {
|
||||||
|
return subtle.ConstantTimeCompare([]byte(p1), []byte(p2)) == 1
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,13 @@ func IndexHandler(rw http.ResponseWriter, req *http.Request) {
|
|||||||
h := handler(req)
|
h := handler(req)
|
||||||
if h.requiresAuth() && !userIsAuthenticated(req, h.Username, h.Password) {
|
if h.requiresAuth() && !userIsAuthenticated(req, h.Username, h.Password) {
|
||||||
if req.Method == "POST" {
|
if req.Method == "POST" {
|
||||||
// TODO: implement
|
username := req.FormValue("username")
|
||||||
|
password := req.FormValue("password")
|
||||||
|
if safeCompare(username, h.Username) && safeCompare(password, h.Password) {
|
||||||
|
userAuthenticate(rw, username, password)
|
||||||
|
http.Redirect(rw, req, req.URL.Path, http.StatusFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if assets != nil {
|
if assets != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user