secgateway/Product/user/user_manager/user_mod.c

151 lines
3.5 KiB
C
Raw Normal View History

#include <stdio.h>
#include "user_mod.h"
#include "user_group.h"
#include "user.h"
#include "array_index.h"
#include "common_user.h"
/* 修改用户函数数组 */
exce_mod_user g_user_modfunc_table[USER_ATTRIBUTE_NUM] = {mod_user_des,
mod_user_group,
mod_user_passwd,
mod_user_multi,
mod_user_valid,
mod_user_valid_begin_time,
mod_user_valid_end_time};
extern USERACCOUNT g_user_table[USER_INDEX_MAX];
bool mod_user_des(unsigned short uid, char* des)
{
if (UDESIZE < strlen(des))
{
return false;
}
strcpy(g_user_table[uid].udescription, des);
/* 连接数据库修改user表中的描述 */
/* UPDATE `user` u SET u.udescription = "" WHERE u.id = ; */
return true;
}
bool mod_user_group(unsigned short uid, char* gname)
{
unsigned short gid = get_groupid_by_name(gname);
if (INVALID_INDEX == gid)
{
return false;
}
g_user_table[uid].GID = gid;
/* 连接数据库修改user表中的用户组id */
/* UPDATE `user` u SET u.group_id = WHERE u.id = ; */
/* 强制用户下线 */
return true;
}
bool mod_user_passwd(unsigned short uid, char* passwd)
{
if (8 >= strlen(passwd) || 24 <= strlen(passwd))
{
return false;
}
strcpy(g_user_table[uid].passwd, passwd);
/* 连接数据库修改user表中的密码 */
/* UPDATE `user` u SET u.password = WHERE u.id = ; */
/* 强制用户下线 */
return true;
}
bool mod_user_multi(unsigned short uid, char* multi)
{
unsigned short multi_old;
unsigned short multi_new = atoi(multi);
if (0 != multi_new && 1 != multi_new)
{
return false;
}
multi_old = MULTI_GET(g_user_table[uid].multi_valid);
g_user_table[uid].multi_valid = MULTI_SET(g_user_table[uid].multi_valid, multi_new);
/* 连接数据库修改user表中的multi_player */
/* UPDATE `user` u SET u.multi_player = WHERE u.id = ; */
if (0 == multi_old && 1 == multi_new)
{
/* 强制用户下线 */
}
return true;
}
void mod_user_valid_offline(unsigned short uid)
{
time_t cur_time;
if (1 == VALID_GET(g_user_table[uid].multi_valid))
{
cur_time = time(NULL);
if (cur_time < g_user_table[uid].valid_begin_time || cur_time > g_user_table[uid].valid_end_time)
{
/* 强制用户下线 */
}
}
}
bool mod_user_valid(unsigned short uid, char* valid)
{
unsigned short valid_new = atoi(valid);
//校验数据
if (0 != valid_new && 1 != valid_new)
{
return false;
}
g_user_table[uid].multi_valid = VALID_SET(g_user_table[uid].multi_valid, valid_new);
/* 连接数据库修改user表中的valid_always */
/* UPDATE `user` u SET u.valid_always = WHERE u.id = ; */
mod_user_valid_offline(uid);
return true;
}
bool mod_user_valid_begin_time(unsigned short uid, char* valid_start_time)
{
time_t temp_time;
/* 校验vaild是否符合"%Y-%m-%d %H:%M:%S"格式不符合直接return */
STRING2TIME_T(valid_start_time, temp_time);
g_user_table[uid].valid_begin_time = temp_time;
/* 连接数据库修改user表中的valid_begin_time */
/* UPDATE `user` u SET u.valid_begin_time = WHERE u.id = ; */
mod_user_valid_offline(uid);
return true;
}
bool mod_user_valid_end_time(unsigned short uid, char* valid_end_time)
{
time_t temp_time;
/* 校验vaild是否符合"%Y-%m-%d %H:%M:%S"格式不符合直接return */
STRING2TIME_T(valid_end_time, temp_time);
g_user_table[uid].valid_end_time = temp_time;
/* 连接数据库修改user表中的valid_end_time */
/* UPDATE `user` u SET u.valid_end_time = WHERE u.id = ; */
mod_user_valid_offline(uid);
return true;
}