diff options
author | scw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-09-12 10:01:18 +0800 |
---|---|---|
committer | scw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-09-12 10:01:18 +0800 |
commit | 893deafff18012d8f8996a9cd4218dc0591994e6 (patch) | |
tree | b255aeff7e263dfc36e1ef01067a551676420f4f /mbbsd/user.c | |
parent | 32d0986fdfa30b6dbe9a060daae7c660fbf440fc (diff) | |
download | pttbbs-893deafff18012d8f8996a9cd4218dc0591994e6.tar pttbbs-893deafff18012d8f8996a9cd4218dc0591994e6.tar.gz pttbbs-893deafff18012d8f8996a9cd4218dc0591994e6.tar.bz2 pttbbs-893deafff18012d8f8996a9cd4218dc0591994e6.tar.lz pttbbs-893deafff18012d8f8996a9cd4218dc0591994e6.tar.xz pttbbs-893deafff18012d8f8996a9cd4218dc0591994e6.tar.zst pttbbs-893deafff18012d8f8996a9cd4218dc0591994e6.zip |
Fix "phone and career lost after modifying email" problem
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3160 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/user.c')
-rw-r--r-- | mbbsd/user.c | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/mbbsd/user.c b/mbbsd/user.c index e64a0f4a..716781d0 100644 --- a/mbbsd/user.c +++ b/mbbsd/user.c @@ -508,6 +508,20 @@ _debug_testregcode() } #endif +static void +justify_wait(char *userid, char *phone, char *career, + char *rname, char *addr, char *mobile) +{ + char buf[PATHLEN]; + sethomefile(buf, userid, "justify.wait"); + if (phone[0] != 0) { + FILE* fn = fopen(buf, "w"); + assert(fn); + fprintf(fn, "%s\n%s\ndummy\n%s\n%s\n%s\n", + phone, career, rname, addr, mobile); + fclose(fn); + } +} static void email_justify(const userec_t *muser) { @@ -933,7 +947,21 @@ uinfo_query(userec_t *u, int adminmode, int unum) setuserid(unum, x.userid); } if (mail_changed) { + char justify_tmp[REGLEN + 1]; + char *phone, *career; + strlcpy(justify_tmp, u->justify, sizeof(justify_tmp)); + x.userlevel &= ~(PERM_LOGINOK | PERM_POST); + + phone = strtok(justify_tmp, ":"); + career = strtok(NULL, ":"); + + if (phone == NULL) phone = ""; + if (career == NULL) career = ""; + + snprintf(buf, sizeof(buf), "%d", x.mobile); + + justify_wait(x.userid, phone, career, x.realname, x.address, buf); email_justify(&x); } memcpy(u, &x, sizeof(x)); @@ -1254,14 +1282,8 @@ toregister(char *email, char *genbuf, char *phone, char *career, FILE *fn; char buf[128]; - sethomefile(buf, cuser.userid, "justify.wait"); - if (phone[0] != 0) { - fn = fopen(buf, "w"); - assert(fn); - fprintf(fn, "%s\n%s\ndummy\n%s\n%s\n%s\n", - phone, career, rname, addr, mobile); - fclose(fn); - } + justify_wait(cuser.userid, phone, career, rname, addr, mobile); + clear(); stand_title("認證設定"); if (cuser.userlevel & PERM_NOREGCODE){ @@ -1609,10 +1631,6 @@ u_register(void) "請按下任一鍵跳離後重新上站~ :)"); sethomefile(genbuf, cuser.userid, "justify.wait"); unlink(genbuf); - // FIXME 改 email 重新認證後,phone 跟 career 會不見 - // 因為當初填進來時是從 justify.wait 讀到的,而這些 - // 資料也沒另外存。所以重新認證時讀不到 justify.wait - // phone 跟 career 就不見了。 snprintf(cuser.justify, sizeof(cuser.justify), "%s:%s:auto", phone, career); sethomefile(genbuf, cuser.userid, "justify"); |