Merge pull request #13208 from Quix0r/fixes/type-hints-indenting
Added type-hints, reformatted arrays
This commit is contained in:
commit
d0b8d78cad
|
@ -752,8 +752,8 @@ class Database
|
||||||
@file_put_contents(
|
@file_put_contents(
|
||||||
$this->config->get('system', 'db_log'),
|
$this->config->get('system', 'db_log'),
|
||||||
DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
||||||
basename($backtrace[1]["file"]) . "\t" .
|
basename($backtrace[1]['file']) . "\t" .
|
||||||
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
$backtrace[1]['line'] . "\t" . $backtrace[2]['function'] . "\t" .
|
||||||
substr($this->replaceParameters($sql, $args), 0, 4000) . "\n",
|
substr($this->replaceParameters($sql, $args), 0, 4000) . "\n",
|
||||||
FILE_APPEND
|
FILE_APPEND
|
||||||
);
|
);
|
||||||
|
|
|
@ -2560,7 +2560,7 @@ class Contact
|
||||||
* @throws HTTPException\InternalServerErrorException
|
* @throws HTTPException\InternalServerErrorException
|
||||||
* @throws \ImagickException
|
* @throws \ImagickException
|
||||||
*/
|
*/
|
||||||
public static function updateFromProbe(int $id, string $network = '')
|
public static function updateFromProbe(int $id, string $network = ''): bool
|
||||||
{
|
{
|
||||||
$contact = DBA::selectFirst('contact', ['uid', 'url'], ['id' => $id]);
|
$contact = DBA::selectFirst('contact', ['uid', 'url'], ['id' => $id]);
|
||||||
if (!DBA::isResult($contact)) {
|
if (!DBA::isResult($contact)) {
|
||||||
|
|
|
@ -341,7 +341,6 @@ class Probe
|
||||||
* @param string $uri Address that should be probed
|
* @param string $uri Address that should be probed
|
||||||
* @param string $network Test for this specific network
|
* @param string $network Test for this specific network
|
||||||
* @param integer $uid User ID for the probe (only used for mails)
|
* @param integer $uid User ID for the probe (only used for mails)
|
||||||
* @param boolean $cache Use cached values?
|
|
||||||
*
|
*
|
||||||
* @return array uri data
|
* @return array uri data
|
||||||
* @throws HTTPException\InternalServerErrorException
|
* @throws HTTPException\InternalServerErrorException
|
||||||
|
@ -1181,7 +1180,6 @@ class Probe
|
||||||
$data = self::pollHcard($profile_link, $data, true);
|
$data = self::pollHcard($profile_link, $data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
$prof_data = [];
|
|
||||||
|
|
||||||
if (empty($data['addr']) || empty($data['nick'])) {
|
if (empty($data['addr']) || empty($data['nick'])) {
|
||||||
$probe_data = self::uri($profile_link);
|
$probe_data = self::uri($profile_link);
|
||||||
|
@ -1189,15 +1187,17 @@ class Probe
|
||||||
$data['nick'] = ($data['nick'] ?? '') ?: $probe_data['nick'];
|
$data['nick'] = ($data['nick'] ?? '') ?: $probe_data['nick'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$prof_data['addr'] = $data['addr'];
|
$prof_data = [
|
||||||
$prof_data['nick'] = $data['nick'];
|
'addr' => $data['addr'],
|
||||||
$prof_data['dfrn-request'] = $data['request'] ?? null;
|
'nick' => $data['nick'],
|
||||||
$prof_data['dfrn-confirm'] = $data['confirm'] ?? null;
|
'dfrn-request' => $data['request'] ?? null,
|
||||||
$prof_data['dfrn-notify'] = $data['notify'] ?? null;
|
'dfrn-confirm' => $data['confirm'] ?? null,
|
||||||
$prof_data['dfrn-poll'] = $data['poll'] ?? null;
|
'dfrn-notify' => $data['notify'] ?? null,
|
||||||
$prof_data['photo'] = $data['photo'] ?? null;
|
'dfrn-poll' => $data['poll'] ?? null,
|
||||||
$prof_data['fn'] = $data['name'] ?? null;
|
'photo' => $data['photo'] ?? null,
|
||||||
$prof_data['key'] = $data['pubkey'] ?? null;
|
'fn' => $data['name'] ?? null,
|
||||||
|
'key' => $data['pubkey'] ?? null,
|
||||||
|
];
|
||||||
|
|
||||||
Logger::debug('Result', ['link' => $profile_link, 'data' => $prof_data]);
|
Logger::debug('Result', ['link' => $profile_link, 'data' => $prof_data]);
|
||||||
|
|
||||||
|
|
|
@ -267,7 +267,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -281,7 +281,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ class Diaspora
|
||||||
if ($no_exit) {
|
if ($no_exit) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +424,7 @@ class Diaspora
|
||||||
|
|
||||||
if (!$base) {
|
if (!$base) {
|
||||||
Logger::notice('unable to locate salmon data in xml');
|
Logger::notice('unable to locate salmon data in xml');
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -444,14 +444,11 @@ class Diaspora
|
||||||
$encoding = $base->encoding;
|
$encoding = $base->encoding;
|
||||||
$alg = $base->alg;
|
$alg = $base->alg;
|
||||||
|
|
||||||
|
|
||||||
$signed_data = $data . '.' . Strings::base64UrlEncode($type) . '.' . Strings::base64UrlEncode($encoding) . '.' . Strings::base64UrlEncode($alg);
|
$signed_data = $data . '.' . Strings::base64UrlEncode($type) . '.' . Strings::base64UrlEncode($encoding) . '.' . Strings::base64UrlEncode($alg);
|
||||||
|
|
||||||
|
|
||||||
// decode the data
|
// decode the data
|
||||||
$data = Strings::base64UrlDecode($data);
|
$data = Strings::base64UrlDecode($data);
|
||||||
|
|
||||||
|
|
||||||
if ($public) {
|
if ($public) {
|
||||||
$inner_decrypted = $data;
|
$inner_decrypted = $data;
|
||||||
} else {
|
} else {
|
||||||
|
@ -467,14 +464,14 @@ class Diaspora
|
||||||
$key = self::key($author);
|
$key = self::key($author);
|
||||||
if (!$key) {
|
if (!$key) {
|
||||||
Logger::notice('Could not retrieve author key.');
|
Logger::notice('Could not retrieve author key.');
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$verify = Crypto::rsaVerify($signed_data, $signature, $key);
|
$verify = Crypto::rsaVerify($signed_data, $signature, $key);
|
||||||
|
|
||||||
if (!$verify) {
|
if (!$verify) {
|
||||||
Logger::notice('Message did not verify. Discarding.');
|
Logger::notice('Message did not verify. Discarding.');
|
||||||
throw new \Friendica\Network\HTTPException\BadRequestException();
|
throw new HTTPException\BadRequestException();
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::info('Message verified.');
|
Logger::info('Message verified.');
|
||||||
|
@ -499,8 +496,7 @@ class Diaspora
|
||||||
*/
|
*/
|
||||||
public static function dispatchPublic(array $msg, int $direction)
|
public static function dispatchPublic(array $msg, int $direction)
|
||||||
{
|
{
|
||||||
$enabled = intval(DI::config()->get('system', 'diaspora_enabled'));
|
if (!DI::config()->get('system', 'diaspora_enabled')) {
|
||||||
if (!$enabled) {
|
|
||||||
Logger::notice('Diaspora is disabled');
|
Logger::notice('Diaspora is disabled');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -940,7 +936,7 @@ class Diaspora
|
||||||
{
|
{
|
||||||
$item = Post::selectFirst(['id'], ['uid' => $uid, 'guid' => $guid]);
|
$item = Post::selectFirst(['id'], ['uid' => $uid, 'guid' => $guid]);
|
||||||
if (DBA::isResult($item)) {
|
if (DBA::isResult($item)) {
|
||||||
Logger::notice('Message ' . $guid . ' already exists for user ' . $uid);
|
Logger::notice('Message already exists.', ['uid' => $uid, 'guid' => $guid, 'id' => $item['id']]);
|
||||||
return $item['id'];
|
return $item['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -951,6 +947,7 @@ class Diaspora
|
||||||
* Checks for links to posts in a message
|
* Checks for links to posts in a message
|
||||||
*
|
*
|
||||||
* @param array $item The item array
|
* @param array $item The item array
|
||||||
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private static function fetchGuid(array $item)
|
private static function fetchGuid(array $item)
|
||||||
|
@ -2569,19 +2566,21 @@ class Diaspora
|
||||||
*
|
*
|
||||||
* @param int $uriid
|
* @param int $uriid
|
||||||
* @param object $photo
|
* @param object $photo
|
||||||
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private static function storePhotoAsMedia(int $uriid, $photo)
|
private static function storePhotoAsMedia(int $uriid, $photo)
|
||||||
{
|
{
|
||||||
// @TODO Need to find object type, roland@f.haeder.net
|
// @TODO Need to find object type, roland@f.haeder.net
|
||||||
Logger::debug('photo=' . get_class($photo));
|
Logger::debug('photo=' . get_class($photo));
|
||||||
$data = [];
|
$data = [
|
||||||
$data['uri-id'] = $uriid;
|
'uri-id' => $uriid,
|
||||||
$data['type'] = Post\Media::IMAGE;
|
'type' => Post\Media::IMAGE,
|
||||||
$data['url'] = XML::unescape($photo->remote_photo_path) . XML::unescape($photo->remote_photo_name);
|
'url' => XML::unescape($photo->remote_photo_path) . XML::unescape($photo->remote_photo_name),
|
||||||
$data['height'] = (int)XML::unescape($photo->height ?? 0);
|
'height' => (int)XML::unescape($photo->height ?? 0),
|
||||||
$data['width'] = (int)XML::unescape($photo->width ?? 0);
|
'width' => (int)XML::unescape($photo->width ?? 0),
|
||||||
$data['description'] = XML::unescape($photo->text ?? '');
|
'description' => XML::unescape($photo->text ?? ''),
|
||||||
|
];
|
||||||
|
|
||||||
Post\Media::insert($data);
|
Post\Media::insert($data);
|
||||||
}
|
}
|
||||||
|
@ -2653,7 +2652,25 @@ class Diaspora
|
||||||
|
|
||||||
$raw_body = $body = Markdown::toBBCode($text);
|
$raw_body = $body = Markdown::toBBCode($text);
|
||||||
|
|
||||||
$datarray = [];
|
$datarray = [
|
||||||
|
'guid' => $guid,
|
||||||
|
'uri-id' => ItemURI::insert(['uri' => $guid, 'guid' => $guid]),
|
||||||
|
'uid' => $importer['uid'],
|
||||||
|
'contact-id' => $contact['id'],
|
||||||
|
'network' => Protocol::DIASPORA,
|
||||||
|
'author-link' => $contact['url'],
|
||||||
|
'author-id' => Contact::getIdForURL($contact['url'], 0),
|
||||||
|
'verb' => Activity::POST,
|
||||||
|
'gravity' => Item::GRAVITY_PARENT,
|
||||||
|
'protocol' => Conversation::PARCEL_DIASPORA,
|
||||||
|
'source' => $xml,
|
||||||
|
'body' => self::replacePeopleGuid($body, $contact['url']),
|
||||||
|
'raw-body' => self::replacePeopleGuid($raw_body, $contact['url']),
|
||||||
|
'private' => (($public == 'false') ? Item::PRIVATE : Item::PUBLIC),
|
||||||
|
// Default is note (aka. comment), later below is being checked the real type
|
||||||
|
'object-type' => Activity\ObjectType::NOTE,
|
||||||
|
'post-type' => Item::PT_NOTE,
|
||||||
|
];
|
||||||
|
|
||||||
$datarray['guid'] = $guid;
|
$datarray['guid'] = $guid;
|
||||||
$datarray['uri'] = $datarray['thr-parent'] = self::getUriFromGuid($guid, $author);
|
$datarray['uri'] = $datarray['thr-parent'] = self::getUriFromGuid($guid, $author);
|
||||||
|
@ -2668,11 +2685,7 @@ class Diaspora
|
||||||
$datarray['object-type'] = Activity\ObjectType::IMAGE;
|
$datarray['object-type'] = Activity\ObjectType::IMAGE;
|
||||||
$datarray['post-type'] = Item::PT_IMAGE;
|
$datarray['post-type'] = Item::PT_IMAGE;
|
||||||
} elseif ($data->poll) {
|
} elseif ($data->poll) {
|
||||||
$datarray['object-type'] = Activity\ObjectType::NOTE;
|
|
||||||
$datarray['post-type'] = Item::PT_POLL;
|
$datarray['post-type'] = Item::PT_POLL;
|
||||||
} else {
|
|
||||||
$datarray['object-type'] = Activity\ObjectType::NOTE;
|
|
||||||
$datarray['post-type'] = Item::PT_NOTE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @todo enable support for polls
|
/// @todo enable support for polls
|
||||||
|
@ -2684,27 +2697,6 @@ class Diaspora
|
||||||
|
|
||||||
/// @todo enable support for events
|
/// @todo enable support for events
|
||||||
|
|
||||||
$datarray['uid'] = $importer['uid'];
|
|
||||||
$datarray['contact-id'] = $contact['id'];
|
|
||||||
$datarray['network'] = Protocol::DIASPORA;
|
|
||||||
|
|
||||||
$datarray['author-link'] = $contact['url'];
|
|
||||||
$datarray['author-id'] = Contact::getIdForURL($contact['url'], 0);
|
|
||||||
|
|
||||||
$datarray['owner-link'] = $datarray['author-link'];
|
|
||||||
$datarray['owner-id'] = $datarray['author-id'];
|
|
||||||
|
|
||||||
$datarray['verb'] = Activity::POST;
|
|
||||||
$datarray['gravity'] = Item::GRAVITY_PARENT;
|
|
||||||
|
|
||||||
$datarray['protocol'] = Conversation::PARCEL_DIASPORA;
|
|
||||||
$datarray['source'] = $xml;
|
|
||||||
|
|
||||||
$datarray = self::setDirection($datarray, $direction);
|
|
||||||
|
|
||||||
$datarray['body'] = self::replacePeopleGuid($body, $contact['url']);
|
|
||||||
$datarray['raw-body'] = self::replacePeopleGuid($raw_body, $contact['url']);
|
|
||||||
|
|
||||||
self::storeMentions($datarray['uri-id'], $text);
|
self::storeMentions($datarray['uri-id'], $text);
|
||||||
Tag::storeRawTagsFromBody($datarray['uri-id'], $datarray['body']);
|
Tag::storeRawTagsFromBody($datarray['uri-id'], $datarray['body']);
|
||||||
|
|
||||||
|
@ -2718,7 +2710,6 @@ class Diaspora
|
||||||
}
|
}
|
||||||
|
|
||||||
$datarray['plink'] = self::plink($author, $guid);
|
$datarray['plink'] = self::plink($author, $guid);
|
||||||
$datarray['private'] = (($public == 'false') ? Item::PRIVATE : Item::PUBLIC);
|
|
||||||
$datarray['changed'] = $datarray['created'] = $datarray['edited'] = $created_at;
|
$datarray['changed'] = $datarray['created'] = $datarray['edited'] = $created_at;
|
||||||
|
|
||||||
if (isset($address['address'])) {
|
if (isset($address['address'])) {
|
||||||
|
@ -2839,7 +2830,7 @@ class Diaspora
|
||||||
public static function buildMagicEnvelope(string $msg, array $user): string
|
public static function buildMagicEnvelope(string $msg, array $user): string
|
||||||
{
|
{
|
||||||
$b64url_data = Strings::base64UrlEncode($msg);
|
$b64url_data = Strings::base64UrlEncode($msg);
|
||||||
$data = str_replace(["\n", "\r", " ", "\t"], ['', '', '', ''], $b64url_data);
|
$data = str_replace(["\n", "\r", ' ', "\t"], ['', '', '', ''], $b64url_data);
|
||||||
|
|
||||||
$key_id = Strings::base64UrlEncode(self::myHandle($user));
|
$key_id = Strings::base64UrlEncode(self::myHandle($user));
|
||||||
$type = 'application/xml';
|
$type = 'application/xml';
|
||||||
|
@ -2857,11 +2848,11 @@ class Diaspora
|
||||||
|
|
||||||
$xmldata = [
|
$xmldata = [
|
||||||
'me:env' => [
|
'me:env' => [
|
||||||
'me:data' => $data,
|
'me:data' => $data,
|
||||||
'@attributes' => ['type' => $type],
|
'@attributes' => ['type' => $type],
|
||||||
'me:encoding' => $encoding,
|
'me:encoding' => $encoding,
|
||||||
'me:alg' => $alg,
|
'me:alg' => $alg,
|
||||||
'me:sig' => $sig,
|
'me:sig' => $sig,
|
||||||
'@attributes2' => ['key_id' => $key_id]
|
'@attributes2' => ['key_id' => $key_id]
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
|
@ -385,12 +385,14 @@ class OStatus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = [];
|
// Initial header elements
|
||||||
$header['uid'] = $importer['uid'];
|
$header = [
|
||||||
$header['network'] = Protocol::OSTATUS;
|
'uid' => $importer['uid'],
|
||||||
$header['wall'] = 0;
|
'network' => Protocol::OSTATUS,
|
||||||
$header['origin'] = 0;
|
'wall' => 0,
|
||||||
$header['gravity'] = Item::GRAVITY_COMMENT;
|
'origin' => 0,
|
||||||
|
'gravity' => Item::GRAVITY_COMMENT,
|
||||||
|
];
|
||||||
|
|
||||||
if (!is_object($doc->firstChild) || empty($doc->firstChild->tagName)) {
|
if (!is_object($doc->firstChild) || empty($doc->firstChild->tagName)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -32,12 +32,12 @@ use PragmaRX\Random\Random;
|
||||||
*/
|
*/
|
||||||
class AppSpecificPassword
|
class AppSpecificPassword
|
||||||
{
|
{
|
||||||
public static function countForUser($uid)
|
public static function countForUser(int $uid)
|
||||||
{
|
{
|
||||||
return DBA::count('2fa_app_specific_password', ['uid' => $uid]);
|
return DBA::count('2fa_app_specific_password', ['uid' => $uid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function checkDuplicateForUser($uid, $description)
|
public static function checkDuplicateForUser(int $uid, string $description): bool
|
||||||
{
|
{
|
||||||
return DBA::exists('2fa_app_specific_password', ['uid' => $uid, 'description' => $description]);
|
return DBA::exists('2fa_app_specific_password', ['uid' => $uid, 'description' => $description]);
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ class AppSpecificPassword
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function authenticateUser($uid, $plaintextPassword)
|
public static function authenticateUser(int $uid, string $plaintextPassword): bool
|
||||||
{
|
{
|
||||||
$appSpecificPasswords = self::getListForUser($uid);
|
$appSpecificPasswords = self::getListForUser($uid);
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ class AppSpecificPassword
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getListForUser($uid)
|
public static function getListForUser(int $uid): array
|
||||||
{
|
{
|
||||||
$appSpecificPasswordsStmt = DBA::select('2fa_app_specific_password', ['id', 'description', 'hashed_password', 'last_used'], ['uid' => $uid]);
|
$appSpecificPasswordsStmt = DBA::select('2fa_app_specific_password', ['id', 'description', 'hashed_password', 'last_used'], ['uid' => $uid]);
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ class AppSpecificPassword
|
||||||
* @return array The new app-specific password data structure with the plaintext password added
|
* @return array The new app-specific password data structure with the plaintext password added
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function generateForUser(int $uid, $description)
|
public static function generateForUser(int $uid, string $description): array
|
||||||
{
|
{
|
||||||
$Random = (new Random())->size(40);
|
$Random = (new Random())->size(40);
|
||||||
|
|
||||||
|
@ -111,10 +111,10 @@ class AppSpecificPassword
|
||||||
$generated = DateTimeFormat::utcNow();
|
$generated = DateTimeFormat::utcNow();
|
||||||
|
|
||||||
$fields = [
|
$fields = [
|
||||||
'uid' => $uid,
|
'uid' => $uid,
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'hashed_password' => User::hashPassword($plaintextPassword),
|
'hashed_password' => User::hashPassword($plaintextPassword),
|
||||||
'generated' => $generated,
|
'generated' => $generated,
|
||||||
];
|
];
|
||||||
|
|
||||||
DBA::insert('2fa_app_specific_password', $fields);
|
DBA::insert('2fa_app_specific_password', $fields);
|
||||||
|
@ -125,7 +125,7 @@ class AppSpecificPassword
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function update($appSpecificPasswordId, $fields)
|
private static function update(int $appSpecificPasswordId, array $fields)
|
||||||
{
|
{
|
||||||
return DBA::update('2fa_app_specific_password', $fields, ['id' => $appSpecificPasswordId]);
|
return DBA::update('2fa_app_specific_password', $fields, ['id' => $appSpecificPasswordId]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,10 +35,11 @@ class RecoveryCode
|
||||||
* Returns the number of code the provided users can still use to replace a TOTP code
|
* Returns the number of code the provided users can still use to replace a TOTP code
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
*
|
||||||
* @return int
|
* @return int
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function countValidForUser($uid)
|
public static function countValidForUser(int $uid): int
|
||||||
{
|
{
|
||||||
return DBA::count('2fa_recovery_codes', ['uid' => $uid, 'used' => null]);
|
return DBA::count('2fa_recovery_codes', ['uid' => $uid, 'used' => null]);
|
||||||
}
|
}
|
||||||
|
@ -46,12 +47,13 @@ class RecoveryCode
|
||||||
/**
|
/**
|
||||||
* Checks the provided code is available to use for login by the provided user
|
* Checks the provided code is available to use for login by the provided user
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
* @param string $code
|
* @param string $code
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function existsForUser($uid, $code)
|
public static function existsForUser(int $uid, string $code): bool
|
||||||
{
|
{
|
||||||
return DBA::exists('2fa_recovery_codes', ['uid' => $uid, 'code' => $code, 'used' => null]);
|
return DBA::exists('2fa_recovery_codes', ['uid' => $uid, 'code' => $code, 'used' => null]);
|
||||||
}
|
}
|
||||||
|
@ -60,10 +62,11 @@ class RecoveryCode
|
||||||
* Returns a complete list of all recovery codes for the provided user, including the used status
|
* Returns a complete list of all recovery codes for the provided user, including the used status
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
*
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getListForUser($uid)
|
public static function getListForUser(int $uid): array
|
||||||
{
|
{
|
||||||
$codesStmt = DBA::select('2fa_recovery_codes', ['code', 'used'], ['uid' => $uid]);
|
$codesStmt = DBA::select('2fa_recovery_codes', ['code', 'used'], ['uid' => $uid]);
|
||||||
|
|
||||||
|
@ -76,10 +79,11 @@ class RecoveryCode
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
* @param string $code
|
* @param string $code
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function markUsedForUser($uid, $code)
|
public static function markUsedForUser(int $uid, string $code): bool
|
||||||
{
|
{
|
||||||
DBA::update('2fa_recovery_codes', ['used' => DateTimeFormat::utcNow()], ['uid' => $uid, 'code' => $code, 'used' => null]);
|
DBA::update('2fa_recovery_codes', ['used' => DateTimeFormat::utcNow()], ['uid' => $uid, 'code' => $code, 'used' => null]);
|
||||||
|
|
||||||
|
@ -91,9 +95,11 @@ class RecoveryCode
|
||||||
* Generates 12 codes constituted of 2 blocks of 6 characters separated by a dash.
|
* Generates 12 codes constituted of 2 blocks of 6 characters separated by a dash.
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function generateForUser($uid)
|
public static function generateForUser(int $uid)
|
||||||
{
|
{
|
||||||
$Random = (new Random())->pattern('[a-z0-9]');
|
$Random = (new Random())->pattern('[a-z0-9]');
|
||||||
|
|
||||||
|
@ -120,9 +126,11 @@ class RecoveryCode
|
||||||
* Deletes all the recovery codes for the provided user.
|
* Deletes all the recovery codes for the provided user.
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function deleteForUser($uid)
|
public static function deleteForUser(int $uid)
|
||||||
{
|
{
|
||||||
DBA::delete('2fa_recovery_codes', ['uid' => $uid]);
|
DBA::delete('2fa_recovery_codes', ['uid' => $uid]);
|
||||||
}
|
}
|
||||||
|
@ -131,9 +139,11 @@ class RecoveryCode
|
||||||
* Replaces the existing recovery codes for the provided user by a freshly generated set.
|
* Replaces the existing recovery codes for the provided user by a freshly generated set.
|
||||||
*
|
*
|
||||||
* @param int $uid User ID
|
* @param int $uid User ID
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function regenerateForUser($uid)
|
public static function regenerateForUser(int $uid)
|
||||||
{
|
{
|
||||||
self::deleteForUser($uid);
|
self::deleteForUser($uid);
|
||||||
self::generateForUser($uid);
|
self::generateForUser($uid);
|
||||||
|
|
|
@ -143,6 +143,7 @@ class TrustedBrowser
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $local_user
|
* @param int $local_user
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function removeAllForUser(int $local_user): bool
|
public function removeAllForUser(int $local_user): bool
|
||||||
|
|
Loading…
Reference in New Issue
Block a user