mirror of
https://github.com/fumiama/paper-manager.git
synced 2026-06-11 11:40:23 +08:00
add dashboard/account
This commit is contained in:
@@ -120,6 +120,31 @@ func init() {
|
||||
writeresult(w, codeSuccess, n, messageOk, typeSuccess)
|
||||
}}
|
||||
|
||||
apimap["/api/getUsersList"] = &apihandler{"GET", func(w http.ResponseWriter, r *http.Request) {
|
||||
token := r.Header.Get("Authorization")
|
||||
ret, err := getUsersList(token)
|
||||
if err != nil {
|
||||
writeresult(w, codeError, nil, err.Error(), typeError)
|
||||
return
|
||||
}
|
||||
writeresult(w, codeSuccess, &ret, messageOk, typeSuccess)
|
||||
}}
|
||||
|
||||
apimap["/api/isNameExist"] = &apihandler{"GET", func(w http.ResponseWriter, r *http.Request) {
|
||||
token := r.Header.Get("Authorization")
|
||||
name := r.URL.Query().Get("username")
|
||||
if name == "" {
|
||||
writeresult(w, codeError, nil, "empty username", typeError)
|
||||
return
|
||||
}
|
||||
yes, err := isNameExist(token, name)
|
||||
if err != nil {
|
||||
writeresult(w, codeError, nil, err.Error(), typeError)
|
||||
return
|
||||
}
|
||||
writeresult(w, codeSuccess, yes, messageOk, typeSuccess)
|
||||
}}
|
||||
|
||||
apimap["/api/setPassword"] = &apihandler{"POST", func(w http.ResponseWriter, r *http.Request) {
|
||||
type setpasswordbody struct {
|
||||
Token string `json:"token"`
|
||||
|
||||
@@ -160,7 +160,7 @@ func (u *UserDatabase) AddUser(user *User, opname string) error {
|
||||
}
|
||||
|
||||
// UpdateUserInfo ...
|
||||
func (u *UserDatabase) UpdateUserInfo(id int, nick, avtr, desc string) error {
|
||||
func (u *UserDatabase) UpdateUserInfo(id int, opname, nick, avtr, desc string) error {
|
||||
user, err := u.GetUserByID(id)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -180,7 +180,7 @@ func (u *UserDatabase) UpdateUserInfo(id int, nick, avtr, desc string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return u.SendMessage("更新了个人信息", user.Name, *user.ID)
|
||||
return u.SendMessage("更新了个人信息", opname, *user.ID)
|
||||
}
|
||||
|
||||
// UpdateUserRole ...
|
||||
@@ -203,7 +203,7 @@ func (u *UserDatabase) UpdateUserRole(id int, nr UserRole, opname string) error
|
||||
}
|
||||
|
||||
// UpdateUserPassword ...
|
||||
func (u *UserDatabase) UpdateUserPassword(id int, npwd string) error {
|
||||
func (u *UserDatabase) UpdateUserPassword(id int, opname, npwd string) error {
|
||||
if npwd == "" {
|
||||
return ErrEmptyPassword
|
||||
}
|
||||
@@ -220,11 +220,11 @@ func (u *UserDatabase) UpdateUserPassword(id int, npwd string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return u.SendMessage("更新了密码", user.Name, *user.ID)
|
||||
return u.SendMessage("更新了密码", opname, *user.ID)
|
||||
}
|
||||
|
||||
// UpdateUserContact ...
|
||||
func (u *UserDatabase) UpdateUserContact(id int, ncont string) error {
|
||||
func (u *UserDatabase) UpdateUserContact(id int, opname, ncont string) error {
|
||||
if ncont == "" {
|
||||
return ErrEmptyContact
|
||||
}
|
||||
@@ -240,7 +240,7 @@ func (u *UserDatabase) UpdateUserContact(id int, ncont string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return u.SendMessage("更新了联系方式", user.Name, *user.ID)
|
||||
return u.SendMessage("更新了联系方式", opname, *user.ID)
|
||||
}
|
||||
|
||||
// GetUserByName avoids sql injection by limiting username to 0-9A-Za-z
|
||||
@@ -307,7 +307,7 @@ func (u *UserDatabase) GetUsers() (users []User, err error) {
|
||||
user.Pswd = ""
|
||||
users[i] = user
|
||||
i++
|
||||
if i >= n {
|
||||
if i > n {
|
||||
return ErrInvalidUsersCount
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -88,7 +88,7 @@ func acceptMessage(token string, id int) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return global.UserDB.UpdateUserPassword(*u.ID, "123456")
|
||||
return global.UserDB.UpdateUserPassword(*u.ID, user.Name, "123456")
|
||||
default:
|
||||
return errNothingToDo
|
||||
}
|
||||
|
||||
@@ -18,7 +18,8 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
errInvalidToken = errors.New("invalid token")
|
||||
errInvalidToken = errors.New("invalid token")
|
||||
errNoListUsersPermission = errors.New("no list users permission")
|
||||
)
|
||||
|
||||
type getUserInfoResult struct {
|
||||
@@ -89,6 +90,50 @@ func getUsersCount(token string) (int, error) {
|
||||
return global.UserDB.GetUsersCount()
|
||||
}
|
||||
|
||||
type getUsersListResult struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Nick string `json:"nick"`
|
||||
Role string `json:"role"`
|
||||
Date string `json:"date"`
|
||||
Desc string `json:"desc"`
|
||||
}
|
||||
|
||||
func getUsersList(token string) ([]getUsersListResult, error) {
|
||||
user := usertokens.Get(token)
|
||||
if user == nil {
|
||||
return nil, errInvalidToken
|
||||
}
|
||||
if !user.IsSuper() {
|
||||
return nil, errNoListUsersPermission
|
||||
}
|
||||
us, err := global.UserDB.GetUsers()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ret := make([]getUsersListResult, len(us))
|
||||
for i, u := range us {
|
||||
ret[i].ID = *u.ID
|
||||
ret[i].Name = u.Name
|
||||
ret[i].Nick = u.Nick
|
||||
ret[i].Role = u.Role.Nick()
|
||||
ret[i].Date = time.Unix(user.Date, 0).Format(chineseDateLayout)
|
||||
ret[i].Desc = u.Desc
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func isNameExist(token, name string) (bool, error) {
|
||||
user := usertokens.Get(token)
|
||||
if user == nil {
|
||||
return false, errInvalidToken
|
||||
}
|
||||
if !user.IsSuper() {
|
||||
return false, errNoListUsersPermission
|
||||
}
|
||||
return global.UserDB.IsNameExists(name), nil
|
||||
}
|
||||
|
||||
func setUserPassword(id int, token, npwd string) error {
|
||||
user, err := global.UserDB.GetUserByID(id)
|
||||
if err != nil {
|
||||
@@ -100,7 +145,7 @@ func setUserPassword(id int, token, npwd string) error {
|
||||
if token != hex.EncodeToString(h.Sum(make([]byte, 0, 16))) {
|
||||
return errInvalidToken
|
||||
}
|
||||
return global.UserDB.UpdateUserPassword(id, npwd)
|
||||
return global.UserDB.UpdateUserPassword(id, user.Name, npwd)
|
||||
}
|
||||
|
||||
func setUserContact(id int, token, ncont string) error {
|
||||
@@ -114,7 +159,7 @@ func setUserContact(id int, token, ncont string) error {
|
||||
if token != hex.EncodeToString(h.Sum(make([]byte, 0, 16))) {
|
||||
return errInvalidToken
|
||||
}
|
||||
return global.UserDB.UpdateUserContact(id, ncont)
|
||||
return global.UserDB.UpdateUserContact(id, user.Name, ncont)
|
||||
}
|
||||
|
||||
// setUserInfo may change the arguments
|
||||
@@ -144,7 +189,7 @@ func setUserInfo(id int, nick, desc, avtr *string) error {
|
||||
if a == user.Avtr {
|
||||
a = ""
|
||||
}
|
||||
return global.UserDB.UpdateUserInfo(id, n, a, d)
|
||||
return global.UserDB.UpdateUserInfo(id, user.Name, n, a, d)
|
||||
}
|
||||
|
||||
func resetPassword(ip, name, mobile string) error {
|
||||
|
||||
Reference in New Issue
Block a user