Add ResetWebAuthorizationOnServerLogEvent.

This commit is contained in:
levlam 2023-09-22 15:58:25 +03:00
parent e65059e540
commit 86185f3b8e
4 changed files with 41 additions and 1 deletions

View File

@ -1049,8 +1049,36 @@ void AccountManager::get_connected_websites(Promise<td_api::object_ptr<td_api::c
td_->create_handler<GetWebAuthorizationsQuery>(std::move(promise))->send();
}
class AccountManager::ResetWebAuthorizationOnServerLogEvent {
public:
int64 hash_;
template <class StorerT>
void store(StorerT &storer) const {
td::store(hash_, storer);
}
template <class ParserT>
void parse(ParserT &parser) {
td::parse(hash_, parser);
}
};
void AccountManager::reset_web_authorization_on_server(int64 hash, uint64 log_event_id, Promise<Unit> &&promise) {
if (log_event_id == 0) {
ResetWebAuthorizationOnServerLogEvent log_event{hash};
log_event_id = binlog_add(G()->td_db()->get_binlog(), LogEvent::HandlerType::ResetWebAuthorizationOnServer,
get_log_event_storer(log_event));
}
auto new_promise = get_erase_log_event_promise(log_event_id, std::move(promise));
promise = std::move(new_promise); // to prevent self-move
td_->create_handler<ResetWebAuthorizationQuery>(std::move(promise))->send(hash);
}
void AccountManager::disconnect_website(int64 website_id, Promise<Unit> &&promise) {
td_->create_handler<ResetWebAuthorizationQuery>(std::move(promise))->send(website_id);
reset_web_authorization_on_server(website_id, 0, std::move(promise));
}
void AccountManager::disconnect_all_websites(Promise<Unit> &&promise) {
@ -1205,6 +1233,13 @@ void AccountManager::on_binlog_events(vector<BinlogEvent> &&events) {
reset_authorizations_on_server(event.id_, Auto());
break;
}
case LogEvent::HandlerType::ResetWebAuthorizationOnServer: {
ResetWebAuthorizationOnServerLogEvent log_event;
log_event_parse(log_event, event.get_data()).ensure();
reset_web_authorization_on_server(log_event.hash_, event.id_, Auto());
break;
}
case LogEvent::HandlerType::SetAccountTtlOnServer: {
SetAccountTtlOnServerLogEvent log_event;
log_event_parse(log_event, event.get_data()).ensure();

View File

@ -81,6 +81,7 @@ class AccountManager final : public Actor {
class ChangeAuthorizationSettingsOnServerLogEvent;
class ResetAuthorizationOnServerLogEvent;
class ResetAuthorizationsOnServerLogEvent;
class ResetWebAuthorizationOnServerLogEvent;
class SetAccountTtlOnServerLogEvent;
class SetAuthorizationTtlOnServerLogEvent;
class SetDefaultHistoryTtlOnServerLogEvent;
@ -112,6 +113,8 @@ class AccountManager final : public Actor {
void reset_authorizations_on_server(uint64 log_event_id, Promise<Unit> &&promise);
void reset_web_authorization_on_server(int64 hash, uint64 log_event_id, Promise<Unit> &&promise);
void set_account_ttl_on_server(int32 account_ttl, uint64 log_event_id, Promise<Unit> &&promise);
void set_authorization_ttl_on_server(int32 authorization_ttl_days, uint64 log_event_id, Promise<Unit> &&promise);

View File

@ -150,6 +150,7 @@ Status init_binlog(Binlog &binlog, string path, BinlogKeyValue<Binlog> &binlog_p
case LogEvent::HandlerType::SetDefaultHistoryTtlOnServer:
case LogEvent::HandlerType::SetAccountTtlOnServer:
case LogEvent::HandlerType::SetAuthorizationTtlOnServer:
case LogEvent::HandlerType::ResetWebAuthorizationOnServer:
events.to_account_manager.push_back(event.clone());
break;
case LogEvent::HandlerType::BinlogPmcMagic:

View File

@ -118,6 +118,7 @@ class LogEvent {
SetDefaultHistoryTtlOnServer = 0x503,
SetAccountTtlOnServer = 0x504,
SetAuthorizationTtlOnServer = 0x505,
ResetWebAuthorizationOnServer = 0x506,
ConfigPmcMagic = 0x1f18,
BinlogPmcMagic = 0x4327
};