Added Vodia Identity Switcher for Xinon Users

This commit is contained in:
Frank Schubert
2025-06-24 11:32:53 +02:00
parent 2fbba259ed
commit 02a423d300
9 changed files with 508 additions and 17 deletions

View File

@@ -313,6 +313,31 @@ class UserController extends mfBaseController
$pak->delete();
}
// vodia identity data
$vid = new WorkerFlag($user->id, "vodia_identity_domain");
if($r->vodia_identity_domain) {
$vid->value($r->vodia_identity_domain);
$vid->save();
} else {
$vid->delete();
}
$viu = new WorkerFlag($user->id, "vodia_identity_username");
if($r->vodia_identity_username) {
$viu->value($r->vodia_identity_username);
$viu->save();
} else {
$viu->delete();
}
$vdi = new WorkerFlag($user->id, "vodia_identity_default");
if($r->vodia_identity_default) {
$vdi->value($r->vodia_identity_default);
$vdi->save();
} else {
$vdi->delete();
}
}
@@ -406,6 +431,12 @@ class UserController extends mfBaseController
case "endse":
$return = $this->endSuperexpertApi();
break;
case "getVodiaIdentity":
$return = $this->getVodiaIdentityApi();
break;
case "setVodiaIdentity":
$return = $this->setVodiaIdentityApi();
break;
default:
$return = false;
}
@@ -419,6 +450,74 @@ class UserController extends mfBaseController
$this->returnJson($data);
}
private function getVodiaIdentityApi() {
if(!ENABLE_VODIA_IDENTITY_SWITCHER) {
return ["enabled" => false];
}
$vodia = new Vodia_Api(VODIA_API_URL, VODIA_API_ADMIN_USER, VODIA_API_ADMIN_PASS);
$domain = $this->me->getFlag("vodia_identity_domain")->value();
$username = $this->me->getFlag("vodia_identity_username")->value();
$default = $this->me->getFlag("vodia_identity_default")->value();
if(!$domain || !$username || !$default) {
return ["enabled" => false];
}
$current = $vodia->getUsersetting($domain, $username, "ani");
if($current) {
if(str_replace(" ", "", $current) == str_replace(" ", "", $default)) {
$current = $default;
}
} else {
$current = $default;
}
return [
"enabled" => true,
"domain" => $domain,
"username" => $username,
"default" => $default,
"default_number" => str_replace(" ", "", $default),
"current" => $current,
"identities" => VODIA_OUTBOUND_IDENTITIES,
];
}
private function setVodiaIdentityApi() {
if(!ENABLE_VODIA_IDENTITY_SWITCHER) {
return ["enabled" => false];
}
$number = $this->request->number;
if(!$number) {
return false;
}
// expects number to start with +
if(!substr($number, 0, 1) == "+") {
return false;
}
$domain = $this->me->getFlag("vodia_identity_domain")->value();
$username = $this->me->getFlag("vodia_identity_username")->value();
if(!$domain || !$username) {
return ["enabled" => false];
}
$vodia = new Vodia_Api(VODIA_API_URL, VODIA_API_ADMIN_USER, VODIA_API_ADMIN_PASS);
if(!$vodia->setUsersettings($domain, $username, ["ani" => $number])) {
return false;
}
return ["enabled" => true, "number" => $number];
}
private function startSuperexpertApi() {
$me = new User();
$me->loadMe();