|
@@ -2667,7 +2667,7 @@ int process_queue(void)
|
|
|
|
|
|
|
|
|
int migrate_account(snac *user)
|
|
|
-
|
|
|
+
|
|
|
{
|
|
|
const char *new_account = xs_dict_get(user->config, "alias");
|
|
|
|
|
@@ -2676,6 +2676,26 @@ int migrate_account(snac *user)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+ xs *new_actor = NULL;
|
|
|
+ int status;
|
|
|
+
|
|
|
+ if (!valid_status(status = actor_request(user, new_account, &new_actor))) {
|
|
|
+ snac_log(user, xs_fmt("Cannot migrate: error requesting actor %s %d", new_account, status));
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ const char *loaka = xs_dict_get(new_actor, "alsoKnownAs");
|
|
|
+
|
|
|
+ if (xs_type(loaka) != XSTYPE_LIST) {
|
|
|
+ snac_log(user, xs_fmt("Cannot migrate: destination account doesn't have any aliases"));
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (xs_list_in(loaka, user->actor) == -1) {
|
|
|
+ snac_log(user, xs_fmt("Cannot migrate: destination account doesn't have this one as an alias"));
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|