Add: backend session support and bug fix

This commit is contained in:
2021-12-12 01:13:26 +08:00
parent f3a95973e9
commit e608a6b1df
6 changed files with 123 additions and 26 deletions

View File

@@ -22,10 +22,21 @@ func (database *Database) LoginAsAnonymous() (*User, error) {
return user, nil
}
func (database *Database) Register(username string, password string, usertype int64) (error) {
func (database *Database) Register(username string, password string, usertype int64) (*User, error) {
_, err := database.stmt.insertUser.Exec(username, password, usertype, 0)
if err != nil {
return err
return nil, err
}
return nil
return database.Login(username, password)
}
func (database *Database) GetUserById(id int64) (*User, error) {
user := &User{}
// get user from database
err := database.stmt.getUserById.QueryRow(id).Scan(&user.ID, &user.Username, &user.Role, &user.AvatarId)
if err != nil {
return user, err
}
return user, nil
}

View File

@@ -165,6 +165,8 @@ var countAdminQuery = `SELECT count(*) FROM users WHERE role= 1;`
var getUserQuery = `SELECT id, username, role, avatar_id FROM users WHERE username = ? AND password = ? LIMIT 1;`
var getUserByIdQuery = `SELECT id, username, role, avatar_id FROM users WHERE id = ? LIMIT 1;`
var getAnonymousUserQuery = `SELECT id, username, role, avatar_id FROM users WHERE role = 0 LIMIT 1;`
type Stmt struct {
@@ -197,6 +199,7 @@ type Stmt struct {
countUser *sql.Stmt
countAdmin *sql.Stmt
getUser *sql.Stmt
getUserById *sql.Stmt
getAnonymousUser *sql.Stmt
}
@@ -429,6 +432,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
return nil, err
}
// init getUserById
stmt.getUserById, err = sqlConn.Prepare(getUserByIdQuery)
if err != nil {
return nil, err
}
// init getAnonymousUser
stmt.getAnonymousUser, err = sqlConn.Prepare(getAnonymousUserQuery)
if err != nil {