mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
46 lines
1.4 KiB
C++
46 lines
1.4 KiB
C++
#include "JsonAquireAccessToken.h"
|
|
|
|
#include "../SingletonManager/SessionManager.h"
|
|
|
|
#include "../controller/AppAccessToken.h"
|
|
#include "../controller/Group.h"
|
|
|
|
|
|
Poco::JSON::Object* JsonAquireAccessToken::handle(Poco::Dynamic::Var params)
|
|
{
|
|
if (!mSession || mSession->getNewUser().isNull()) {
|
|
auto session_result = checkAndLoadSession(params, true);
|
|
if (session_result) {
|
|
return session_result;
|
|
}
|
|
}
|
|
Poco::JSON::Object* result = new Poco::JSON::Object;
|
|
result->set("state", "success");
|
|
auto user = mSession->getNewUser();
|
|
auto user_id = user->getModel()->getID();
|
|
auto access_tokens = controller::AppAccessToken::load(user_id);
|
|
Poco::AutoPtr<controller::AppAccessToken> access_token;
|
|
if (access_tokens.size() > 0) {
|
|
access_token = access_tokens[0];
|
|
access_token->getModel()->update();
|
|
}
|
|
else {
|
|
access_token = controller::AppAccessToken::create(user_id);
|
|
// for a bit faster return
|
|
UniLib::controller::TaskPtr task = new model::table::ModelInsertTask(access_token->getModel(), false, true);
|
|
task->scheduleTask(task);
|
|
// default
|
|
//access_token->getModel()->insertIntoDB(false);
|
|
}
|
|
|
|
result->set("access_token", std::to_string(access_token->getModel()->getCode()));
|
|
|
|
auto group_base_url = user->getGroupBaseUrl();
|
|
auto group = controller::Group::load(user->getModel()->getGroupId());
|
|
if (!group.isNull()) {
|
|
result->set("group_base_url", group->getModel()->getUrl());
|
|
}
|
|
|
|
return result;
|
|
|
|
} |