51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#include "AuthToken.h"
|
|
#include "lib/utils/base64.hpp"
|
|
#include "datetime.h"
|
|
#include "base64.hpp"
|
|
|
|
namespace bts {
|
|
namespace api {
|
|
namespace auth {
|
|
|
|
#ifndef _WIN32
|
|
user::AuthToken generate_token(const admin::BTSUser& user) {
|
|
api::user::TokenPayload payload;
|
|
payload.set_date(datetime::ll_now());
|
|
payload.set_id(user.id());
|
|
if(user.name() == "bts")
|
|
payload.set_wheel(true);
|
|
auto token = websocketpp::base64_encode(payload.SerializeAsString());
|
|
user::AuthToken result;
|
|
result.set_token(token);
|
|
return result;
|
|
}
|
|
user::AuthToken generate_wheel_token() {
|
|
api::user::TokenPayload payload;
|
|
payload.set_date(datetime::ll_now());
|
|
payload.set_id(99999);
|
|
payload.set_wheel(true);
|
|
auto token = websocketpp::base64_encode(payload.SerializeAsString());
|
|
user::AuthToken result;
|
|
result.set_token(token);
|
|
return result;
|
|
}
|
|
#else
|
|
user::AuthToken generate_wheel_token() {
|
|
return user::AuthToken();
|
|
}
|
|
#endif
|
|
|
|
bool decode_token(const std::string& token, user::TokenPayload* payload) {
|
|
std::string temp = websocketpp::base64_decode(token);
|
|
if (payload) {
|
|
return payload->ParseFromString(temp);
|
|
}
|
|
else {
|
|
// validate the token but don't return it
|
|
user::TokenPayload payload;
|
|
return payload.ParseFromString(temp);
|
|
}
|
|
}
|
|
|
|
}}}
|