summaryrefslogtreecommitdiffstats
path: root/mbbsd
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-04-18 14:31:22 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-04-18 14:31:22 +0800
commit37f7b8ce5a7909a47b18bdcdddc66feec0db3839 (patch)
treec1e52ccb55214e572b57bc93d2dddb42ace87985 /mbbsd
parentc77c6cf22be895bb34192df420a9a141fe4a9d2c (diff)
downloadpttbbs-37f7b8ce5a7909a47b18bdcdddc66feec0db3839.tar
pttbbs-37f7b8ce5a7909a47b18bdcdddc66feec0db3839.tar.gz
pttbbs-37f7b8ce5a7909a47b18bdcdddc66feec0db3839.tar.bz2
pttbbs-37f7b8ce5a7909a47b18bdcdddc66feec0db3839.tar.lz
pttbbs-37f7b8ce5a7909a47b18bdcdddc66feec0db3839.tar.xz
pttbbs-37f7b8ce5a7909a47b18bdcdddc66feec0db3839.tar.zst
pttbbs-37f7b8ce5a7909a47b18bdcdddc66feec0db3839.zip
- (admin/user) kick user before making changes
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4188 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r--mbbsd/user.c123
1 files changed, 71 insertions, 52 deletions
diff --git a/mbbsd/user.c b/mbbsd/user.c
index a4c28146..44985776 100644
--- a/mbbsd/user.c
+++ b/mbbsd/user.c
@@ -333,6 +333,7 @@ violate_law(userec_t * u, int unum)
return;
}
+ kick_all(u->userid);
kill_user(unum, u->userid);
post_violatelaw(u->userid, cuser.userid, reason, "砍除 ID");
} else {
@@ -582,9 +583,19 @@ uinfo_query(userec_t *u, int adminmode, int unum)
outs(msg_uid);
outs(x.userid);
}
+
+ if (adminmode && ((ans >= '1' && ans <= '7') || ans == 'm') &&
+ search_ulist(unum))
+ {
+ if (vans("使用者目前正在線上,修改資料會先踢下線。確定要繼續嗎? (y/N): ")
+ != 'y')
+ return;
+ }
switch (ans) {
case 'c':
- Customize();
+ // Customize can only apply to self.
+ if (!adminmode)
+ Customize();
return;
case 'm':
@@ -1017,62 +1028,70 @@ uinfo_query(userec_t *u, int adminmode, int unum)
return;
}
- // now confirmed.
- if (1) {
- if (perm_changed) {
- post_change_perm(changefrom, x.userlevel, cuser.userid, x.userid);
+ // now confirmed. do everything directly.
+
+ // perm_changed is by sysop only.
+ if (perm_changed) {
+ sendalert(x.userid, ALERT_PWD_PERM); // force to reload perm
+ post_change_perm(changefrom, x.userlevel, cuser.userid, x.userid);
#ifdef PLAY_ANGEL
- if (x.userlevel & ~changefrom & PERM_ANGEL)
- mail_id(x.userid, "翅膀長出來了!", "etc/angel_notify", "[上帝]");
+ if (x.userlevel & ~changefrom & PERM_ANGEL)
+ mail_id(x.userid, "翅膀長出來了!", "etc/angel_notify", "[上帝]");
#endif
- }
- if (strcmp(u->userid, x.userid)) {
- char src[STRLEN], dst[STRLEN];
+ }
+ if (strcmp(u->userid, x.userid)) {
+ char src[STRLEN], dst[STRLEN];
- sethomepath(src, u->userid);
- sethomepath(dst, x.userid);
- Rename(src, dst);
- setuserid(unum, x.userid);
- }
- if (mail_changed && !adminmode) {
- // wait registration.
- x.userlevel &= ~(PERM_LOGINOK | PERM_POST);
- }
- memcpy(u, &x, sizeof(x));
- if (tokill) {
- kill_user(unum, x.userid);
- return;
- } else
- log_usies("SetUser", x.userid);
- if (money_changed) {
- char title[TTLEN+1];
- char msg[512];
- char reason[50];
- clrtobot();
- clear();
- while (!getdata(5, 0, "請輸入理由以示負責:",
- reason, sizeof(reason), DOECHO));
-
- snprintf(msg, sizeof(msg),
- " 站長" ANSI_COLOR(1;32) "%s" ANSI_RESET "把" ANSI_COLOR(1;32) "%s" ANSI_RESET "的錢"
- "從" ANSI_COLOR(1;35) "%d" ANSI_RESET "改成" ANSI_COLOR(1;35) "%d" ANSI_RESET "\n"
- " " ANSI_COLOR(1;37) "站長%s修改錢理由是:%s" ANSI_RESET,
- cuser.userid, x.userid, changefrom, x.money,
- cuser.userid, reason);
- snprintf(title, sizeof(title),
- "[公安報告] 站長%s修改%s錢報告", cuser.userid,
- x.userid);
- post_msg(BN_SECURITY, title, msg, "[系統安全局]");
- setumoney(unum, x.money);
- }
- passwd_update(unum, &x);
- if(perm_changed)
- sendalert(x.userid, ALERT_PWD_PERM); // force to reload perm
+ sethomepath(src, u->userid);
+ sethomepath(dst, x.userid);
+ Rename(src, dst);
+ setuserid(unum, x.userid);
+ }
+ if (mail_changed && !adminmode) {
+ // wait registration.
+ x.userlevel &= ~(PERM_LOGINOK | PERM_POST);
+ }
+ memcpy(u, &x, sizeof(x));
+ if (tokill) {
+ kick_all(x.userid);
+ kill_user(unum, x.userid);
+ return;
+ } else
+ log_usies("SetUser", x.userid);
- // resolve_over18 only works for cuser
- if (!adminmode)
- resolve_over18();
+ if (money_changed) {
+ char title[TTLEN+1];
+ char msg[512];
+ char reason[50];
+ clrtobot();
+ clear();
+ while (!getdata(5, 0, "請輸入理由以示負責:",
+ reason, sizeof(reason), DOECHO));
+
+ snprintf(msg, sizeof(msg),
+ " 站長" ANSI_COLOR(1;32) "%s" ANSI_RESET "把" ANSI_COLOR(1;32) "%s" ANSI_RESET "的錢"
+ "從" ANSI_COLOR(1;35) "%d" ANSI_RESET "改成" ANSI_COLOR(1;35) "%d" ANSI_RESET "\n"
+ " " ANSI_COLOR(1;37) "站長%s修改錢理由是:%s" ANSI_RESET,
+ cuser.userid, x.userid, changefrom, x.money,
+ cuser.userid, reason);
+ snprintf(title, sizeof(title),
+ "[公安報告] 站長%s修改%s錢報告", cuser.userid,
+ x.userid);
+ post_msg(BN_SECURITY, title, msg, "[系統安全局]");
+ setumoney(unum, x.money);
}
+
+ passwd_update(unum, &x);
+
+ if (adminmode)
+ {
+ sendalert(x.userid, ALERT_PWD_RELOAD);
+ kick_all(x.userid);
+ }
+
+ // resolve_over18 only works for cuser
+ if (!adminmode)
+ resolve_over18();
}
int