Fix issues detected by static code analysis

This commit is contained in:
Bubka 2022-10-12 11:13:13 +02:00
parent 8d3a97a701
commit 6a41c77144
7 changed files with 32 additions and 17 deletions

View File

@ -106,7 +106,7 @@ public function update(TwoFAccountUpdateRequest $request, TwoFAccount $twofaccou
* Convert a migration resource to a valid TwoFAccounts collection * Convert a migration resource to a valid TwoFAccounts collection
* *
* @param \App\Api\v1\Requests\TwoFAccountImportRequest $request * @param \App\Api\v1\Requests\TwoFAccountImportRequest $request
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse|\App\Api\v1\Resources\TwoFAccountCollection
*/ */
public function migrate(TwoFAccountImportRequest $request) public function migrate(TwoFAccountImportRequest $request)
{ {

View File

@ -21,7 +21,7 @@ class MigratorFactory implements MigratorFactoryInterface
* @param string $migrationPayload The migration payload used to infer the migrator type * @param string $migrationPayload The migration payload used to infer the migrator type
* @return Migrator * @return Migrator
*/ */
public function create($migrationPayload) : Migrator public function create(string $migrationPayload) : Migrator
{ {
if ($this->isAegisJSON($migrationPayload)) { if ($this->isAegisJSON($migrationPayload)) {
return App::make(AegisMigrator::class); return App::make(AegisMigrator::class);
@ -41,9 +41,12 @@ public function create($migrationPayload) : Migrator
/** /**
* Determine if a payload comes from Google Authenticator
* *
* @param string $migrationPayload The payload to analyse
* @return bool
*/ */
private function isGoogleAuth($migrationPayload) : bool private function isGoogleAuth(string $migrationPayload) : bool
{ {
// - Google Auth migration URI : a string starting with otpauth-migration://offline?data= on a single line // - Google Auth migration URI : a string starting with otpauth-migration://offline?data= on a single line
@ -57,9 +60,12 @@ private function isGoogleAuth($migrationPayload) : bool
/** /**
* Determine if a payload is a plain text content
* *
* @param string $migrationPayload The payload to analyse
* @return bool
*/ */
private function isPlainText($migrationPayload) : bool private function isPlainText(string $migrationPayload) : bool
{ {
// - Plain text : one or more otpauth URIs (otpauth://[t|h]otp/...), one per line // - Plain text : one or more otpauth URIs (otpauth://[t|h]otp/...), one per line
@ -73,9 +79,12 @@ private function isPlainText($migrationPayload) : bool
/** /**
* Determine if a payload comes from Aegis Authenticator in JSON format
* *
* @param string $migrationPayload The payload to analyse
* @return bool
*/ */
private function isAegisJSON($migrationPayload) : mixed private function isAegisJSON(string $migrationPayload) : mixed
{ {
// - Aegis JSON : is a JSON object with the key db.entries full of objects like // - Aegis JSON : is a JSON object with the key db.entries full of objects like
// { // {
@ -108,7 +117,7 @@ private function isAegisJSON($migrationPayload) : mixed
'db.entries.*.issuer' => 'required', 'db.entries.*.issuer' => 'required',
'db.entries.*.info' => 'required' 'db.entries.*.info' => 'required'
] ]
)); )) > 0;
} }
} }
@ -117,9 +126,12 @@ private function isAegisJSON($migrationPayload) : mixed
/** /**
* Determine if a payload comes from 2FAS Authenticator
* *
* @param string $migrationPayload The payload to analyse
* @return bool
*/ */
private function is2FASv2($migrationPayload) : mixed private function is2FASv2(string $migrationPayload) : mixed
{ {
// - 2FAS JSON : is a JSON object with the key 'schemaVersion' == 2 and a key 'services' full of objects like // - 2FAS JSON : is a JSON object with the key 'schemaVersion' == 2 and a key 'services' full of objects like
// { // {
@ -156,7 +168,7 @@ private function is2FASv2($migrationPayload) : mixed
'services.*.name' => 'required', 'services.*.name' => 'required',
'services.*.otp' => 'required' 'services.*.otp' => 'required'
] ]
)); )) > 0;
} }
} }

View File

@ -9,8 +9,7 @@ class Helpers
/** /**
* Generate a unique filename * Generate a unique filename
* *
* @param string $ids twofaccount ids to delete * @param string $extension
*
* @return string The filename * @return string The filename
*/ */
public static function getUniqueFilename(string $extension): string public static function getUniqueFilename(string $extension): string

View File

@ -49,6 +49,8 @@ public function migrate(mixed $migrationPayload) : Collection
throw new InvalidMigrationDataException('Aegis'); throw new InvalidMigrationDataException('Aegis');
} }
$twofaccounts = array();
foreach ($json['db']['entries'] as $key => $otp_parameters) { foreach ($json['db']['entries'] as $key => $otp_parameters) {
$parameters = array(); $parameters = array();
@ -81,7 +83,6 @@ public function migrate(mixed $migrationPayload) : Collection
default: default:
throw new \Exception(); throw new \Exception();
break;
} }
$filename = Helpers::getUniqueFilename($extension); $filename = Helpers::getUniqueFilename($extension);

View File

@ -12,11 +12,14 @@ abstract class Migrator
* @param mixed $migrationPayload * @param mixed $migrationPayload
* @return \Illuminate\Support\Collection The converted accounts * @return \Illuminate\Support\Collection The converted accounts
*/ */
abstract protected function migrate(mixed $migrationPayload) : Collection; abstract public function migrate(mixed $migrationPayload) : Collection;
/** /**
* Pad a string to 8 chars min * Pad a string to 8 chars min
*
* @param string $string
* @return string The padded string
*/ */
protected function padToValidBase32Secret(string $string) protected function padToValidBase32Secret(string $string)
{ {

View File

@ -81,6 +81,8 @@ public function migrate(mixed $migrationPayload) : Collection
throw new InvalidMigrationDataException('2FAS Auth'); throw new InvalidMigrationDataException('2FAS Auth');
} }
$twofaccounts = array();
foreach ($json['services'] as $key => $otp_parameters) { foreach ($json['services'] as $key => $otp_parameters) {
$parameters = array(); $parameters = array();

View File

@ -10,7 +10,7 @@
class TwoFAccountService class TwoFAccountService
{ {
/** /**
* @var $migrator The Migration service * @var MigratorFactoryInterface $migratorFactory The Migration service
*/ */
protected $migratorFactory; protected $migratorFactory;
@ -50,11 +50,10 @@ public static function withdraw($ids) : void
/** /**
* Convert a migration payload to a set of TwoFAccount objects * Convert a migration payload to a set of TwoFAccount objects
* *
* @param string $migrationUri migration uri provided by Google Authenticator export feature * @param string $migrationPayload Migration payload from 2FA apps export feature
*
* @return \Illuminate\Support\Collection The converted accounts * @return \Illuminate\Support\Collection The converted accounts
*/ */
public function migrate($migrationPayload) : Collection public function migrate(string $migrationPayload) : Collection
{ {
$migrator = $this->migratorFactory->create($migrationPayload); $migrator = $this->migratorFactory->create($migrationPayload);
$twofaccounts = $migrator->migrate($migrationPayload); $twofaccounts = $migrator->migrate($migrationPayload);
@ -67,7 +66,6 @@ public function migrate($migrationPayload) : Collection
* Delete one or more twofaccounts * Delete one or more twofaccounts
* *
* @param int|array|string $ids twofaccount ids to delete * @param int|array|string $ids twofaccount ids to delete
*
* @return int The number of deleted * @return int The number of deleted
*/ */
public static function delete($ids) : int public static function delete($ids) : int