mirror of
https://github.com/fumiama/paper-manager.git
synced 2026-06-29 23:30:43 +08:00
fix messages
This commit is contained in:
@@ -153,15 +153,12 @@ func (u *UserDatabase) AddUser(user *User, opname string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = u.notifyUserAdded(opname, user.Name)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
nu, err := u.GetUserByName(user.Name)
|
nu, err := u.GetUserByName(user.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return u.SendMessage(opname+"创建了账号", opname, *nu.ID)
|
_ = u.notifyUserAdded(opname, user.Name, *nu.ID)
|
||||||
|
return u.SendMessage(opname+" 创建了您的账号", opname, *nu.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateUserInfo ...
|
// UpdateUserInfo ...
|
||||||
@@ -185,7 +182,10 @@ func (u *UserDatabase) UpdateUserInfo(id int, opname, nick, avtr, desc string) e
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return u.SendMessage(opname+"更新了个人信息", opname, *user.ID)
|
if opname != user.Name {
|
||||||
|
return u.SendMessage(opname+" 更新了您的个人信息", opname, *user.ID)
|
||||||
|
}
|
||||||
|
return u.SendMessage("更新了个人信息", opname, *user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateUserRole ...
|
// UpdateUserRole ...
|
||||||
@@ -197,6 +197,9 @@ func (u *UserDatabase) UpdateUserRole(id int, nr UserRole, opname string) error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if opname == user.Name {
|
||||||
|
return ErrInvalidName
|
||||||
|
}
|
||||||
user.Role = nr
|
user.Role = nr
|
||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
err = u.db.Insert(UserTableUser, &user)
|
err = u.db.Insert(UserTableUser, &user)
|
||||||
@@ -204,7 +207,8 @@ func (u *UserDatabase) UpdateUserRole(id int, nr UserRole, opname string) error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return u.SendMessage("您的权限被"+opname+"变更为"+user.Role.Nick(), opname, *user.ID)
|
_ = u.SendMessage("您的权限被 "+opname+" 变更为 "+user.Role.Nick(), opname, *user.ID)
|
||||||
|
return u.notifyUpdateUserRole(user.Name, opname, nr, *user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DisableUser ...
|
// DisableUser ...
|
||||||
@@ -213,16 +217,19 @@ func (u *UserDatabase) DisableUser(id int, opname string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if opname == user.Name {
|
||||||
|
return ErrInvalidName
|
||||||
|
}
|
||||||
user.Last = time.Now().Unix()
|
user.Last = time.Now().Unix()
|
||||||
user.Pswd = ""
|
user.Pswd = ""
|
||||||
_ = u.SendMessage("账户被"+opname+"禁用", opname, *user.ID)
|
|
||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
err = u.db.Insert(UserTableUser, &user)
|
err = u.db.Insert(UserTableUser, &user)
|
||||||
u.mu.Unlock()
|
u.mu.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return u.SendMessage(user.Name+"的账户被"+opname+"禁用", opname, *user.ID)
|
_ = u.SendMessage("您的账户被 "+opname+" 禁用", opname, *user.ID)
|
||||||
|
return u.notifyDisableUser(user.Name, opname, *user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateUserPassword ...
|
// UpdateUserPassword ...
|
||||||
@@ -236,14 +243,17 @@ func (u *UserDatabase) UpdateUserPassword(id int, opname, npwd string) error {
|
|||||||
}
|
}
|
||||||
user.Last = time.Now().Unix()
|
user.Last = time.Now().Unix()
|
||||||
user.Pswd = npwd
|
user.Pswd = npwd
|
||||||
_ = u.notifyPasswordChange(user.Name, npwd)
|
|
||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
err = u.db.Insert(UserTableUser, &user)
|
err = u.db.Insert(UserTableUser, &user)
|
||||||
u.mu.Unlock()
|
u.mu.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return u.SendMessage(opname+"更新了密码", opname, *user.ID)
|
_ = u.notifyPasswordChange(user.Name, npwd, opname, *user.ID)
|
||||||
|
if user.Name != opname {
|
||||||
|
return u.SendMessage(opname+" 更新了您的密码", opname, *user.ID)
|
||||||
|
}
|
||||||
|
return u.SendMessage("更新了密码", opname, *user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateUserContact ...
|
// UpdateUserContact ...
|
||||||
@@ -256,14 +266,17 @@ func (u *UserDatabase) UpdateUserContact(id int, opname, ncont string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
user.Cont = ncont
|
user.Cont = ncont
|
||||||
_ = u.notifyContactChange(user.Name, ncont)
|
|
||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
err = u.db.Insert(UserTableUser, &user)
|
err = u.db.Insert(UserTableUser, &user)
|
||||||
u.mu.Unlock()
|
u.mu.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return u.SendMessage(opname+"更新了联系方式", opname, *user.ID)
|
_ = u.notifyContactChange(user.Name, ncont, *user.ID)
|
||||||
|
if user.Name != opname {
|
||||||
|
return u.SendMessage(opname+" 更新了您的联系方式", opname, *user.ID)
|
||||||
|
}
|
||||||
|
return u.SendMessage("更新了联系方式", opname, *user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUserByName avoids sql injection by limiting username to 0-9A-Za-z
|
// GetUserByName avoids sql injection by limiting username to 0-9A-Za-z
|
||||||
@@ -413,7 +426,7 @@ func (u *UserDatabase) SendMessage(text, opname string, to int) error {
|
|||||||
m := Message{ToID: to, Date: time.Now().Unix(), Text: text, Cont: opname, Pswd: "opname"}
|
m := Message{ToID: to, Date: time.Now().Unix(), Text: text, Cont: opname, Pswd: "opname"}
|
||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
defer u.mu.Unlock()
|
defer u.mu.Unlock()
|
||||||
return u.db.InsertUnique(UserTableMessage, m)
|
return u.db.InsertUnique(UserTableMessage, &m)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NotifyRegister will send register notification to all supers
|
// NotifyRegister will send register notification to all supers
|
||||||
@@ -511,7 +524,7 @@ func (u *UserDatabase) NotifyResetPassword(ip, name, cont string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// notifyUserAdded will send notification to all supers
|
// notifyUserAdded will send notification to all supers
|
||||||
func (u *UserDatabase) notifyUserAdded(opname, name string) error {
|
func (u *UserDatabase) notifyUserAdded(opname, name string, nuid int) error {
|
||||||
if opname == "" || name == "" {
|
if opname == "" || name == "" {
|
||||||
return ErrEmptyName
|
return ErrEmptyName
|
||||||
}
|
}
|
||||||
@@ -529,6 +542,9 @@ func (u *UserDatabase) notifyUserAdded(opname, name string) error {
|
|||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
defer u.mu.Unlock()
|
defer u.mu.Unlock()
|
||||||
for _, to := range tos {
|
for _, to := range tos {
|
||||||
|
if nuid == to {
|
||||||
|
continue
|
||||||
|
}
|
||||||
m.ToID = to
|
m.ToID = to
|
||||||
err = u.db.InsertUnique(UserTableMessage, &m)
|
err = u.db.InsertUnique(UserTableMessage, &m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -539,7 +555,7 @@ func (u *UserDatabase) notifyUserAdded(opname, name string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// notifyContactChange will send notification to all supers
|
// notifyContactChange will send notification to all supers
|
||||||
func (u *UserDatabase) notifyContactChange(name, cont string) error {
|
func (u *UserDatabase) notifyContactChange(name, cont string, id int) error {
|
||||||
if name == "" {
|
if name == "" {
|
||||||
return ErrEmptyName
|
return ErrEmptyName
|
||||||
}
|
}
|
||||||
@@ -561,6 +577,9 @@ func (u *UserDatabase) notifyContactChange(name, cont string) error {
|
|||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
defer u.mu.Unlock()
|
defer u.mu.Unlock()
|
||||||
for _, to := range tos {
|
for _, to := range tos {
|
||||||
|
if id == to {
|
||||||
|
continue
|
||||||
|
}
|
||||||
m.ToID = to
|
m.ToID = to
|
||||||
err = u.db.InsertUnique(UserTableMessage, &m)
|
err = u.db.InsertUnique(UserTableMessage, &m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -571,7 +590,7 @@ func (u *UserDatabase) notifyContactChange(name, cont string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// notifyPasswordChange will send notification to all supers
|
// notifyPasswordChange will send notification to all supers
|
||||||
func (u *UserDatabase) notifyPasswordChange(name, npwd string) error {
|
func (u *UserDatabase) notifyPasswordChange(name, npwd, opname string, id int) error {
|
||||||
if name == "" {
|
if name == "" {
|
||||||
return ErrEmptyName
|
return ErrEmptyName
|
||||||
}
|
}
|
||||||
@@ -583,13 +602,80 @@ func (u *UserDatabase) notifyPasswordChange(name, npwd string) error {
|
|||||||
|
|
||||||
m := Message{
|
m := Message{
|
||||||
Date: time.Now().Unix(),
|
Date: time.Now().Unix(),
|
||||||
Text: "用户 " + name + " 更改了密码",
|
Text: "用户 " + name + " 被 " + opname + " 更改了密码",
|
||||||
Name: name,
|
Name: name,
|
||||||
Pswd: npwd,
|
Pswd: npwd,
|
||||||
}
|
}
|
||||||
u.mu.Lock()
|
u.mu.Lock()
|
||||||
defer u.mu.Unlock()
|
defer u.mu.Unlock()
|
||||||
for _, to := range tos {
|
for _, to := range tos {
|
||||||
|
if id == to {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
m.ToID = to
|
||||||
|
err = u.db.InsertUnique(UserTableMessage, &m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// notifyPasswordChange will send notification to all supers
|
||||||
|
func (u *UserDatabase) notifyUpdateUserRole(name, opname string, role UserRole, id int) error {
|
||||||
|
if name == "" || opname == "" {
|
||||||
|
return ErrEmptyName
|
||||||
|
}
|
||||||
|
|
||||||
|
tos, err := u.GetSuperIDs()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := Message{
|
||||||
|
Date: time.Now().Unix(),
|
||||||
|
Text: name + " 的权限被 " + opname + " 变更为 " + role.Nick(),
|
||||||
|
Cont: opname,
|
||||||
|
Pswd: "opname",
|
||||||
|
}
|
||||||
|
u.mu.Lock()
|
||||||
|
defer u.mu.Unlock()
|
||||||
|
for _, to := range tos {
|
||||||
|
if id == to {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
m.ToID = to
|
||||||
|
err = u.db.InsertUnique(UserTableMessage, &m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// notifyPasswordChange will send notification to all supers
|
||||||
|
func (u *UserDatabase) notifyDisableUser(name, opname string, id int) error {
|
||||||
|
if name == "" || opname == "" {
|
||||||
|
return ErrEmptyName
|
||||||
|
}
|
||||||
|
|
||||||
|
tos, err := u.GetSuperIDs()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := Message{
|
||||||
|
Date: time.Now().Unix(),
|
||||||
|
Text: name + " 的账户被 " + opname + " 禁用",
|
||||||
|
Cont: opname,
|
||||||
|
Pswd: "opname",
|
||||||
|
}
|
||||||
|
u.mu.Lock()
|
||||||
|
defer u.mu.Unlock()
|
||||||
|
for _, to := range tos {
|
||||||
|
if id == to {
|
||||||
|
continue
|
||||||
|
}
|
||||||
m.ToID = to
|
m.ToID = to
|
||||||
err = u.db.InsertUnique(UserTableMessage, &m)
|
err = u.db.InsertUnique(UserTableMessage, &m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -37,18 +37,17 @@ func getMessageList(token string) ([]messageList, error) {
|
|||||||
am := make(map[string]string, 64)
|
am := make(map[string]string, 64)
|
||||||
for i, m := range ms {
|
for i, m := range ms {
|
||||||
avtr := ""
|
avtr := ""
|
||||||
if a, ok := am[m.Name]; ok {
|
n := m.Name
|
||||||
|
if n == "" {
|
||||||
|
n = m.Cont
|
||||||
|
}
|
||||||
|
if a, ok := am[n]; ok {
|
||||||
avtr = a
|
avtr = a
|
||||||
} else {
|
} else {
|
||||||
var u global.User
|
u, err := global.UserDB.GetUserByName(n)
|
||||||
if m.Name != "" {
|
|
||||||
u, err = global.UserDB.GetUserByName(m.Name)
|
|
||||||
} else if m.Cont != "" {
|
|
||||||
u, err = global.UserDB.GetUserByName(m.Cont)
|
|
||||||
}
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
avtr = u.Avtr
|
avtr = u.Avtr
|
||||||
am[m.Name] = u.Avtr
|
am[n] = u.Avtr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ml[i].ID = *m.ID
|
ml[i].ID = *m.ID
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ enum Api {
|
|||||||
GetUsersList = '/getUsersList',
|
GetUsersList = '/getUsersList',
|
||||||
IsNameExist = '/isNameExist',
|
IsNameExist = '/isNameExist',
|
||||||
SetRole = '/setRole',
|
SetRole = '/setRole',
|
||||||
SetStatus = '/setStatus',
|
DisableUser = '/disableUser',
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -166,7 +166,7 @@ export function doLogout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const setRole = (id: number, role: number) =>
|
export const setRole = (id: number, role: number) =>
|
||||||
defHttp.post({ url: Api.SetRole, params: { id, role } })
|
defHttp.post({ url: Api.SetRole, params: { id, role } }, { errorMessageMode: 'none' })
|
||||||
|
|
||||||
export const setStatus = (id: number, stat: boolean) =>
|
export const disableUser = (id: number, stat: boolean) =>
|
||||||
defHttp.post({ url: Api.SetStatus, params: { id, stat } })
|
defHttp.post({ url: Api.DisableUser, params: { id, stat } }, { errorMessageMode: 'none' })
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { FormSchema } from '/@/components/Table'
|
|||||||
import { h } from 'vue'
|
import { h } from 'vue'
|
||||||
import { Switch } from 'ant-design-vue'
|
import { Switch } from 'ant-design-vue'
|
||||||
import { useMessage } from '/@/hooks/web/useMessage'
|
import { useMessage } from '/@/hooks/web/useMessage'
|
||||||
import { setStatus } from '/@/api/sys/user'
|
import { disableUser } from '/@/api/sys/user'
|
||||||
|
|
||||||
export const columns: BasicColumn[] = [
|
export const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
@@ -37,7 +37,7 @@ export const columns: BasicColumn[] = [
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
record.pendingStatus = true
|
record.pendingStatus = true
|
||||||
setStatus(record.id, checked)
|
disableUser(record.id, checked)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
record.stat = checked
|
record.stat = checked
|
||||||
createMessage.success(`已成功禁用账户并清空密码, 如需重新启用, 请让用户找回密码`)
|
createMessage.success(`已成功禁用账户并清空密码, 如需重新启用, 请让用户找回密码`)
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
const { createMessage } = useMessage()
|
const { createMessage } = useMessage()
|
||||||
getMessageList().then((value) => {
|
getMessageList().then((value) => {
|
||||||
if (value) dynamicInfoItemsRef.value = value
|
if (value) dynamicInfoItemsRef.value = value
|
||||||
|
else dynamicInfoItemsRef.value = []
|
||||||
})
|
})
|
||||||
async function accept(id: number) {
|
async function accept(id: number) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user