MCPcopy Create free account
hub / github.com/GoMudEngine/GoMud / Modify

Function Modify

internal/usercommands/admin.modify.go:20–111  ·  view source on GitHub ↗

* * Role Permissions: * modify (All) * modify.role (Change user roles) */

(rest string, user *users.UserRecord, room *rooms.Room, flags events.EventFlag)

Source from the content-addressed store, hash-verified

18* modify.role (Change user roles)
19 */
20func Modify(rest string, user *users.UserRecord, room *rooms.Room, flags events.EventFlag) (bool, error) {
21
22 args := util.SplitButRespectQuotes(rest)
23
24 if len(args) < 3 {
25 infoOutput, _ := templates.Process("admincommands/help/command.modify", nil, user.UserId)
26 user.SendText(infoOutput)
27 return true, nil
28 }
29
30 // modify role <username> <newrole>
31 if args[0] == `role` {
32
33 if !user.HasRolePermission(`modify.role`) {
34 user.SendText(`you do not have <ansi fg="command">modify.role</ansi> permission`)
35 return true, nil
36 }
37
38 searchUser := args[1]
39 newRole := args[2]
40
41 if newRole != users.RoleAdmin && newRole != users.RoleUser && newRole != users.RoleMod {
42 user.SendText(`<ansi fg="alert-4">Invalid role. Valid roles: user, mod, admin</ansi>`)
43 return true, nil
44 }
45
46 foundUsername := ``
47 foundCharacterName := ``
48
49 for _, u := range users.GetAllActiveUsers() {
50 if strings.EqualFold(searchUser, u.Username) {
51
52 if u.Role == users.RoleAdmin {
53 user.SendText(`<ansi fg="alert-4">Admin role cannot be removed this way.</ansi>`)
54 return true, nil
55 }
56
57 if u.Role == newRole {
58 user.SendText(`<ansi fg="alert-4">That role is already set for this user.</ansi>`)
59 return true, nil
60 }
61
62 foundCharacterName = u.Character.Name
63 foundUsername = u.Username
64
65 u.Role = newRole
66
67 users.SaveUser(*u)
68
69 u.SendText(`<ansi fg="alert-3">Your role has been set to: ` + newRole + `</ansi>`)
70 break
71 }
72 }
73
74 if len(foundUsername) == 0 {
75 users.SearchOfflineUsers(func(u *users.UserRecord) bool {
76
77 if strings.EqualFold(searchUser, u.Username) {

Callers

nothing calls this directly

Calls 7

SplitButRespectQuotesFunction · 0.92
ProcessFunction · 0.92
GetAllActiveUsersFunction · 0.92
SaveUserFunction · 0.92
SearchOfflineUsersFunction · 0.92
HasRolePermissionMethod · 0.80
SendTextMethod · 0.45

Tested by

no test coverage detected