Skip to content

Commit 34baf56

Browse files
authored
Merge pull request #130 from dreamfactorysoftware/develop
Fix issue with first user validation
2 parents 7b8c090 + a94f14e commit 34baf56

1 file changed

Lines changed: 26 additions & 29 deletions

File tree

src/Models/User.php

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
use DreamFactory\Core\Utility\UpdatesSender;
2727
use Illuminate\Support\Facades\Http;
2828
use Carbon\Carbon;
29-
29+
use Illuminate\Validation\ValidationException;
30+
use Illuminate\Support\Arr;
3031
/**
3132
* User
3233
*
@@ -613,49 +614,45 @@ public static function resetAdminExists()
613614
public static function createFirstAdmin(array $data)
614615
{
615616
Log::debug('Creating first admin user');
616-
617-
if (empty($data['username'])) {
618-
$data['username'] = $data['email'];
619-
}
620617

621-
$validationRules = [
618+
// Default username to email if not provided
619+
$data['username'] = $data['username'] ?? $data['email'];
620+
621+
$validator = Validator::make($data, [
622622
'name' => 'required|max:255',
623623
'first_name' => 'required|max:255',
624624
'last_name' => 'required|max:255',
625625
'email' => 'required|email|max:255|unique:user',
626626
'password' => 'required|confirmed|min:16',
627-
'username' => 'min:6|unique:user,username|regex:/^\S*$/u|required',
627+
'username' => 'required|min:6|unique:user,username|regex:/^\S*$/u',
628628
'phone' => 'required|max:32',
629-
];
630-
631-
$validator = Validator::make($data, $validationRules);
629+
]);
632630

633631
if ($validator->fails()) {
634-
$errors = $validator->getMessageBag()->all();
635-
$data = array_merge($data, ['errors' => $errors, 'version' => \Config::get('app.version')]);
632+
Log::debug('Validation failed', ['errors' => $validator->errors()->all()]);
633+
throw new ValidationException($validator);
634+
}
636635

637-
return false;
638-
} else {
639-
/** @type User $user */
640-
$attributes = array_only($data, ['name', 'first_name', 'last_name', 'email', 'username', 'phone']);
641-
$attributes['is_active'] = 1;
642-
$user = static::create($attributes);
636+
$attributes = Arr::only($data, ['name', 'first_name', 'last_name', 'email', 'username', 'phone']);
637+
$attributes['is_active'] = 1;
643638

644-
$user->password = array_get($data, 'password');
645-
$user->is_sys_admin = 1;
646-
$user->save();
639+
/** @var User $user */
640+
$user = static::create($attributes);
641+
$user->password = Arr::get($data, 'password');
642+
$user->is_sys_admin = 1;
643+
$user->save();
647644

648-
InstanceId::getInstanceIdOrGenerate();
645+
InstanceId::getInstanceIdOrGenerate();
649646

650-
// Register user
651-
RegisterContact::registerUser($user);
652-
// Reset admin_exists flag in cache.
653-
\Cache::forever('admin_exists', true);
647+
// Register user
648+
RegisterContact::registerUser($user);
654649

655-
UpdatesSender::sendFreshInstanceData($data, true);
650+
// Reset admin_exists flag in cache
651+
\Cache::forever('admin_exists', true);
656652

657-
return $user;
658-
}
653+
UpdatesSender::sendFreshInstanceData($data, true);
654+
655+
return $user;
659656
}
660657

661658
public function save(array $options = [])

0 commit comments

Comments
 (0)