This commit is contained in:
Zhi Wang 2022-01-23 13:19:49 -05:00
parent d7e3bfd4e9
commit 85452df40f
3 changed files with 33 additions and 16 deletions

View File

@ -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">

View File

@ -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),
},
)

View File

@ -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})
}