95 lines
2.4 KiB
C++
95 lines
2.4 KiB
C++
//
|
|
// Created by dongl on 23-4-23.
|
|
//
|
|
|
|
#include "UserDB.h"
|
|
#include "template_table/im_user.h"
|
|
#include "proto/mp.sri.pb.h"
|
|
|
|
UserDB::~UserDB() {
|
|
delete sri;
|
|
}
|
|
|
|
// 登陆
|
|
mp::sri* UserDB::login(uint64_t account, const std::string& password) {
|
|
auto query = conn->query("select * from im_user where account=%0:account;");
|
|
query.parse();
|
|
|
|
std::vector<im_user> v;
|
|
query.storein(v, account);
|
|
|
|
sri = new mp::sri();
|
|
// 无账户
|
|
if (v.empty()) {
|
|
sri->set_sri_msg("无此账户");
|
|
sri->set_sri_code(mp::MP_LOGIN_ACCOUNT_NOT);
|
|
return sri;
|
|
}
|
|
|
|
// 判断密码
|
|
im_user user = v[0];
|
|
std::string source = std::to_string(account) + password + user.password_salt;
|
|
size_t password_hash = std::hash<std::string>()(source);
|
|
// hash_password(&password_hash, source.c_str(), source.size());
|
|
|
|
if (user.password == std::to_string(password_hash)) {
|
|
printf("登陆成功\n");
|
|
sri->set_sri_msg("登陆成功!");
|
|
sri->set_sri_code(mp::MP_LOGIN_SUCCESS);
|
|
sri->set_sri_token("token");
|
|
sri->set_sri_username(user.username);
|
|
} else {
|
|
printf("登陆失败\n");
|
|
sri->set_sri_msg("登陆失败!");
|
|
sri->set_sri_code(mp::MP_LOGIN_FAIL);
|
|
}
|
|
|
|
return sri;
|
|
}
|
|
|
|
// 注册
|
|
mp::sri *UserDB::register_(uint64_t account, const std::string &password, const std::string &password_salt,
|
|
const std::string& client_info) {
|
|
mysqlpp::String info(client_info);
|
|
if (!sri) {
|
|
sri = new mp::sri();
|
|
}
|
|
|
|
// 检验重复账户
|
|
auto query = conn->query("select account from im_user where account=%0:account;");
|
|
query.parse();
|
|
auto is_exist = query.store(account);
|
|
|
|
if (!is_exist.empty()) {
|
|
sri->set_sri_msg("帐号已经注册!");
|
|
sri->set_sri_code(mp::MP_REGISTER_EXIST);
|
|
|
|
printf("帐号已经注册!\n");
|
|
return sri;
|
|
}
|
|
|
|
// 添加账户
|
|
query.insert(im_user(account, "用户"+ std::to_string(account), password, password_salt, info));
|
|
auto ret = query.exec();
|
|
if (ret) {
|
|
sri->set_sri_msg("注册成功!");
|
|
sri->set_sri_code(mp::MP_REGISTER_SUCCESS);
|
|
printf("注册成功!\n");
|
|
} else {
|
|
sri->set_sri_msg("注册失败!");
|
|
printf("注册失败!\n");
|
|
}
|
|
|
|
return sri;
|
|
}
|
|
|
|
// 注销登陆
|
|
mp::sri *UserDB::logout(uint64_t account) {
|
|
return nullptr;
|
|
}
|
|
|
|
|
|
|
|
|
|
|