diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2008-02-26 00:35:38 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2008-02-26 00:35:38 +0800 |
commit | 31077a7c833e60121e843456d52fbbb5bda88ddb (patch) | |
tree | 31d04e86bc068409199810743c221a74636f8302 /mbbsd/cache.c | |
parent | 88b4d69ded90aac6895d9619d1a786b3f4c2a8ad (diff) | |
download | pttbbs-31077a7c833e60121e843456d52fbbb5bda88ddb.tar pttbbs-31077a7c833e60121e843456d52fbbb5bda88ddb.tar.gz pttbbs-31077a7c833e60121e843456d52fbbb5bda88ddb.tar.bz2 pttbbs-31077a7c833e60121e843456d52fbbb5bda88ddb.tar.lz pttbbs-31077a7c833e60121e843456d52fbbb5bda88ddb.tar.xz pttbbs-31077a7c833e60121e843456d52fbbb5bda88ddb.tar.zst pttbbs-31077a7c833e60121e843456d52fbbb5bda88ddb.zip |
- b_config: more detail hints on user post permission checking
- bcache code refine
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3948 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/cache.c')
-rw-r--r-- | mbbsd/cache.c | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/mbbsd/cache.c b/mbbsd/cache.c index 7df6a49a..5a30c24f 100644 --- a/mbbsd/cache.c +++ b/mbbsd/cache.c @@ -789,44 +789,55 @@ getbnum(const char *bname) return 0; } -int -haspostperm(const char *bname) +const char * +postperm_msg(const char *bname) { register int i; - char buf[200]; + char buf[PATHLEN]; + boardheader_t *bp = NULL; setbfile(buf, bname, fn_water); if (belong(buf, cuser.userid)) - return 0; + return "使用者水桶中"; if (!strcasecmp(bname, DEFAULT_BOARD)) - return 1; + return NULL; if (!(i = getbnum(bname))) - return 0; + return "看板不存在"; + assert(0<=i-1 && i-1<MAX_BOARD); + bp = getbcache(i); - if (bcache[i - 1].brdattr & BRD_GUESTPOST) - return 1; + if (bp->brdattr & BRD_GUESTPOST) + return NULL; if (!HasUserPerm(PERM_POST)) - return 0; + return "無發文權限"; /* 秘密看板特別處理 */ - if (bcache[i - 1].brdattr & BRD_HIDE) - return 1; - else if (bcache[i - 1].brdattr & BRD_RESTRICTEDPOST && + if (bp->brdattr & BRD_HIDE) + return NULL; + else if (bp->brdattr & BRD_RESTRICTEDPOST && !is_hidden_board_friend(i, usernum)) - return 0; + return "看板限制發文"; - i = bcache[i - 1].level; - - if (HasUserPerm(PERM_VIOLATELAW) && (i & PERM_VIOLATELAW)) - return 1; + if (HasUserPerm(PERM_VIOLATELAW) && (bp->level & PERM_VIOLATELAW)) + return NULL; else if (HasUserPerm(PERM_VIOLATELAW)) - return 0; + return "罰單未繳"; - return (i & ~PERM_POST) ? HasUserPerm(i & ~PERM_POST) : 1; + if (!(bp->level & ~PERM_POST)) + return NULL; + if (!HasUserPerm(bp->level & ~PERM_POST)) + return "未達看板要求權限"; + return NULL; +} + +int +haspostperm(const char *bname) +{ + return postperm_msg(bname) == NULL ? 1 : 0; } void buildBMcache(int bid) /* bid starts from 1 */ |