add lastlogin for user
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-01-19 09:17:31 +11:00
parent bb3bf3093d
commit 2ab6240a24
4 changed files with 949 additions and 974 deletions

View File

@@ -7,18 +7,19 @@ import (
"log"
"smt/utils"
"smt/utils/token"
"time"
"golang.org/x/crypto/bcrypt"
)
type User struct {
UserId int `db:"UserId" json:"userId"`
GroupId int `db:"GroupId" json:"groupId"`
UserName string `db:"UserName" json:"userName"`
Password string `db:"Password" json:"-"`
LdapUser bool `db:"LdapUser" json:"ldapUser"`
Admin bool `db:"Admin"`
//LdapDn string `db:"LdapDn" json:"ldapDn"`
UserId int `db:"UserId" json:"userId"`
GroupId int `db:"GroupId" json:"groupId"`
UserName string `db:"UserName" json:"userName"`
Password string `db:"Password" json:"-"`
LdapUser bool `db:"LdapUser" json:"ldapUser"`
Admin bool `db:"Admin"`
LastLogin time.Time `db:"LastLogin" json:"lastLogin"`
}
type UserRole struct {
@@ -207,6 +208,8 @@ func LoginCheck(username string, password string) (string, error) {
return "", err
}
u.UserSetLastLogin()
return token, nil
}
@@ -286,15 +289,23 @@ func UserLdapNewLoginCheck(username string, password string) (User, error) {
return u, nil
}
/*
// StoreLdapUser creates a user record in the database and returns the corresponding userId
func StoreLdapUser(u *User) error {
func (u *User) UserSetLastLogin() error {
// TODO
u.LastLogin = time.Now().UTC()
result, err := db.NamedExec((`UPDATE users SET LastLogin = :LastLogin WHERE UserId = :UserId`), u)
if err != nil {
log.Printf("UserSetLastLogin error executing sql update : '%s'\n", err)
return err
} else {
affected, _ := result.RowsAffected()
id, _ := result.LastInsertId()
log.Printf("UserSetLastLogin returned result id '%d' affecting %d row(s).\n", id, affected)
}
return nil
}
*/
func UserGetByID(uid uint) (User, error) {