diff --git a/flexiapi/app/Account.php b/flexiapi/app/Account.php index 1e388eb..8155b65 100644 --- a/flexiapi/app/Account.php +++ b/flexiapi/app/Account.php @@ -367,8 +367,8 @@ IMPP:sip:' . $this->getIdentifierAttribute(); $vcard .= ' FN:'; - $vcard .= !empty($this->attributes['display_name']) - ? $this->attributes['display_name'] + $vcard .= !empty($this->display_name) + ? $this->display_name : $this->getIdentifierAttribute(); if ($this->dtmf_protocol) { diff --git a/flexiapi/app/Helpers/Utils.php b/flexiapi/app/Helpers/Utils.php index 4249a8d..713e585 100644 --- a/flexiapi/app/Helpers/Utils.php +++ b/flexiapi/app/Helpers/Utils.php @@ -120,7 +120,7 @@ function captchaConfigured(): bool function resolveUserContacts(Request $request) { - $selected = ['id', 'username', 'domain', 'activated', 'dtmf_protocol']; + $selected = ['id', 'username', 'domain', 'activated', 'dtmf_protocol', 'display_name']; return Account::whereIn('id', function ($query) use ($request) { $query->select('contact_id') diff --git a/flexiapi/app/Http/Controllers/Account/AuthenticateController.php b/flexiapi/app/Http/Controllers/Account/AuthenticateController.php index c289b73..f7f5347 100644 --- a/flexiapi/app/Http/Controllers/Account/AuthenticateController.php +++ b/flexiapi/app/Http/Controllers/Account/AuthenticateController.php @@ -80,6 +80,29 @@ class AuthenticateController extends Controller return redirect()->back()->withErrors(['authentication' => 'Wrong username or password']); } + /** + * Deprecated + */ + public function validateEmail(Request $request, string $code) + { + $request->merge(['code' => $code]); + $request->validate(['code' => 'required|size:' . self::$emailCodeSize]); + + $account = Account::where('confirmation_key', $code)->first(); + + if (!$account) { + return redirect()->route('account.login'); + } + + $account->confirmation_key = null; + $account->activated = true; + $account->save(); + + Auth::login($account); + + return redirect()->route('dashboard'); + } + public function loginAuthToken(Request $request, ?string $token = null) { $authToken = null; diff --git a/flexiapi/database/factories/AccountFactory.php b/flexiapi/database/factories/AccountFactory.php index d2c6eac..a816c3f 100644 --- a/flexiapi/database/factories/AccountFactory.php +++ b/flexiapi/database/factories/AccountFactory.php @@ -35,7 +35,7 @@ class AccountFactory extends Factory { return [ 'username' => $this->faker->username, - 'display_name' => $this->faker->username, + 'display_name' => $this->faker->name, 'domain' => config('app.sip_domain'), 'email' => $this->faker->email, 'user_agent' => $this->faker->userAgent, diff --git a/flexiapi/routes/web.php b/flexiapi/routes/web.php index c50a9b1..095ab94 100644 --- a/flexiapi/routes/web.php +++ b/flexiapi/routes/web.php @@ -47,6 +47,9 @@ Route::middleware(['web_panel_enabled'])->group(function () { Route::post('authenticate', 'Account\AuthenticateController@authenticate')->name('account.authenticate'); Route::get('authenticate/qrcode/{token?}', 'Account\AuthenticateController@loginAuthToken')->name('account.authenticate.auth_token'); + // Deprecated + Route::get('authenticate/email/{code}', 'Account\AuthenticateController@validateEmail')->name('account.authenticate.email_confirm'); + Route::prefix('creation_token')->controller(CreationRequestTokenController::class)->group(function () { Route::get('check/{token}', 'check')->name('account.creation_request_token.check'); Route::post('validate', 'validateToken')->name('account.creation_request_token.validate'); diff --git a/flexiapi/tests/Feature/AccountProvisioningTest.php b/flexiapi/tests/Feature/AccountProvisioningTest.php index 0c62ee1..f7c29ef 100644 --- a/flexiapi/tests/Feature/AccountProvisioningTest.php +++ b/flexiapi/tests/Feature/AccountProvisioningTest.php @@ -102,6 +102,8 @@ class AccountProvisioningTest extends TestCase public function testAuthenticatedReProvisioning() { $password = Password::factory()->create(); + $password->account->display_name = "Anna O'Reily"; + $password->account->save(); $password->account->generateApiKey(); $provisioningToken = $password->account->provisioning_token; @@ -126,7 +128,7 @@ class AccountProvisioningTest extends TestCase ->assertStatus(200) ->assertHeader('Content-Type', 'application/xml') ->assertSee($password->account->username) - ->assertSee($password->account->display_name) + ->assertSee($password->account->display_name, false) ->assertSee('ha1'); }