Files
spark/src/lib/utils/AuthToken.cpp
T

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