mirror of
https://github.com/syssecfsu/witty.git
synced 2025-05-07 07:07:27 +02:00
WIP
This commit is contained in:
parent
d7e3bfd4e9
commit
85452df40f
@ -30,7 +30,7 @@
|
|||||||
<img class="mb-4" src="/assets/img/keyboard.svg" alt="" width="64">
|
<img class="mb-4" src="/assets/img/keyboard.svg" alt="" width="64">
|
||||||
|
|
||||||
<div class="form-floating">
|
<div class="form-floating">
|
||||||
<input type="text" class="form-control" id="username" name="username" placeholder="User Name">
|
<input type="text" class="form-control" id="username" name="username" placeholder="User Name" value="{{.username}}">
|
||||||
<label for="username">User Name</label>
|
<label for="username">User Name</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-floating">
|
<div class="form-floating">
|
||||||
|
18
web/auth.go
18
web/auth.go
@ -10,7 +10,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
userkey = "authorized_user"
|
userKey = "authorized_user"
|
||||||
|
nameKey = "last_login"
|
||||||
loginKey = "login_msg"
|
loginKey = "login_msg"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -41,7 +42,8 @@ func login(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Save the username in the session
|
// Save the username in the session
|
||||||
session.Set(userkey, username)
|
session.Set(userKey, username)
|
||||||
|
session.Set(nameKey, username)
|
||||||
|
|
||||||
if err := session.Save(); err != nil {
|
if err := session.Save(); err != nil {
|
||||||
leftLoginMsg(c, "Failed to save session data")
|
leftLoginMsg(c, "Failed to save session data")
|
||||||
@ -55,9 +57,9 @@ func login(c *gin.Context) {
|
|||||||
func logout(c *gin.Context) {
|
func logout(c *gin.Context) {
|
||||||
session := sessions.Default(c)
|
session := sessions.Default(c)
|
||||||
|
|
||||||
user := session.Get(userkey)
|
user := session.Get(userKey)
|
||||||
if user != nil {
|
if user != nil {
|
||||||
session.Delete(userkey)
|
session.Delete(userKey)
|
||||||
session.Save()
|
session.Save()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +70,7 @@ func logout(c *gin.Context) {
|
|||||||
// AuthRequired is a simple middleware to check the session
|
// AuthRequired is a simple middleware to check the session
|
||||||
func AuthRequired(c *gin.Context) {
|
func AuthRequired(c *gin.Context) {
|
||||||
session := sessions.Default(c)
|
session := sessions.Default(c)
|
||||||
user := session.Get(userkey)
|
user := session.Get(userKey)
|
||||||
|
|
||||||
if user == nil {
|
if user == nil {
|
||||||
leftLoginMsg(c, "Not authorized, login first")
|
leftLoginMsg(c, "Not authorized, login first")
|
||||||
@ -88,9 +90,15 @@ func loginPage(c *gin.Context) {
|
|||||||
msg = "Login first"
|
msg = "Login first"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
username := session.Get(nameKey)
|
||||||
|
if username == nil {
|
||||||
|
username = ""
|
||||||
|
}
|
||||||
|
|
||||||
c.HTML(http.StatusOK, "login.html",
|
c.HTML(http.StatusOK, "login.html",
|
||||||
gin.H{
|
gin.H{
|
||||||
"msg": msg,
|
"msg": msg,
|
||||||
|
"username": username,
|
||||||
"csrfField": csrf.TemplateField(c.Request),
|
"csrfField": csrf.TemplateField(c.Request),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
29
web/user.go
29
web/user.go
@ -13,7 +13,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
userFileName = "user.db"
|
userFileName = "./user.db"
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserRecord struct {
|
type UserRecord struct {
|
||||||
@ -37,18 +37,27 @@ func addUser(username []byte, passwd []byte) {
|
|||||||
exist := false
|
exist := false
|
||||||
file, err := os.ReadFile(userFileName)
|
file, err := os.ReadFile(userFileName)
|
||||||
|
|
||||||
if (err == nil) && (json.Unmarshal(file, users) == nil) {
|
if err != nil {
|
||||||
// update the existing user if it exists
|
log.Println("Failed to read user.db file", err)
|
||||||
for _, u := range users {
|
goto nonexist
|
||||||
if bytes.Equal(u.User, username) {
|
}
|
||||||
u.Seed = seed
|
|
||||||
u.Passwd = hashed
|
if err = json.Unmarshal(file, &users); err != nil {
|
||||||
exist = true
|
log.Println("Failed to unmarsh file", err)
|
||||||
break
|
goto nonexist
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update the existing user if it exists
|
||||||
|
for i, u := range users {
|
||||||
|
if bytes.Equal(u.User, username) {
|
||||||
|
users[i].Seed = seed
|
||||||
|
users[i].Passwd = hashed
|
||||||
|
exist = true
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nonexist:
|
||||||
if !exist {
|
if !exist {
|
||||||
users = append(users, UserRecord{username, seed, hashed})
|
users = append(users, UserRecord{username, seed, hashed})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user