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