secgateway/Product/user/user_manager/user_mod.c

151 lines
3.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}