Fix #106 Remove completely the deprecated laravelcollective/html dependency

This commit is contained in:
Timothée Jaussoin 2023-08-08 15:11:11 +02:00
parent adabb52f3f
commit 77f334a730
37 changed files with 357 additions and 462 deletions

View file

@ -77,7 +77,6 @@ On nginx use `fastcgi_param` to pass the parameter directly to PHP.
fastcgi_param APP_NAME "VirtualHost Two";
}
> **Warning** Do not create a cache of your configuration (using `artisan config:cache`) if you have a multi-environnement setup.
> The cache is always having the priority on the variables set in the configuration files.

View file

@ -91,7 +91,6 @@ class ContactsListController extends Controller
return redirect()->route('admin.contacts_lists.index');
}
public function delete(int $id)
{
return view('admin.contacts_list.delete', [

View file

@ -14,7 +14,6 @@
"endroid/qr-code": "^4.1",
"fakerphp/faker": "^1.21",
"laravel/framework": "^9.5",
"laravelcollective/html": "^6.4",
"namoshek/laravel-redis-sentinel": "^0.1.2",
"ovh/ovh": "^3.0",
"parsedown/laravel": "^1.2",

93
flexiapi/composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "88c676507ce76ebe1497a823ace9ff24",
"content-hash": "a31eb010c7ab5e6155a75412b6da7e9c",
"packages": [
{
"name": "anhskohbo/no-captcha",
@ -1142,28 +1142,28 @@
},
{
"name": "evenement/evenement",
"version": "v3.0.1",
"version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
"reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc",
"reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
"phpunit/phpunit": "^9 || ^6"
},
"type": "library",
"autoload": {
"psr-0": {
"Evenement": "src"
"psr-4": {
"Evenement\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -1183,9 +1183,9 @@
],
"support": {
"issues": "https://github.com/igorw/evenement/issues",
"source": "https://github.com/igorw/evenement/tree/master"
"source": "https://github.com/igorw/evenement/tree/v3.0.2"
},
"time": "2017-07-23T21:35:13+00:00"
"time": "2023-08-08T05:53:35+00:00"
},
{
"name": "fakerphp/faker",
@ -2055,79 +2055,6 @@
},
"time": "2023-07-14T13:56:28+00:00"
},
{
"name": "laravelcollective/html",
"version": "v6.4.1",
"source": {
"type": "git",
"url": "https://github.com/LaravelCollective/html.git",
"reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/LaravelCollective/html/zipball/64ddfdcaeeb8d332bd98bef442bef81e39c3910b",
"reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b",
"shasum": ""
},
"require": {
"illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/routing": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/view": "^6.0|^7.0|^8.0|^9.0|^10.0",
"php": ">=7.2.5"
},
"require-dev": {
"illuminate/database": "^6.0|^7.0|^8.0|^9.0|^10.0",
"mockery/mockery": "~1.0",
"phpunit/phpunit": "~8.5|^9.5.10"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.x-dev"
},
"laravel": {
"providers": [
"Collective\\Html\\HtmlServiceProvider"
],
"aliases": {
"Form": "Collective\\Html\\FormFacade",
"Html": "Collective\\Html\\HtmlFacade"
}
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Collective\\Html\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Adam Engebretson",
"email": "adam@laravelcollective.com"
},
{
"name": "Taylor Otwell",
"email": "taylorotwell@gmail.com"
}
],
"description": "HTML and Form Builders for the Laravel Framework",
"homepage": "https://laravelcollective.com",
"support": {
"issues": "https://github.com/LaravelCollective/html/issues",
"source": "https://github.com/LaravelCollective/html"
},
"abandoned": "spatie/laravel-html",
"time": "2023-04-25T02:46:11+00:00"
},
{
"name": "league/commonmark",
"version": "2.4.0",

View file

@ -602,7 +602,6 @@ table thead {
border-bottom: 1px solid var(--second-4);
}
table tr:nth-child(2n) {
background-color: var(--grey-1);
}
@ -647,7 +646,6 @@ table tr.empty td:before {
display: inherit !important;
}
.on_mobile.material-icons {
display: inline !important;
}

View file

@ -3,11 +3,13 @@
@section('content')
<div class="card mt-3">
<div class="card-body">
{!! Form::open(['route' => 'account.creation_request_token.validate']) !!}
{!! Form::hidden('account_creation_request_token', $account_creation_request_token->token) !!}
<form method="POST" action="{{ route('account.creation_request_token.validate') }}" accept-charset="UTF-8">
@csrf
<input name="account_creation_request_token" type="hidden" value="{{ $account_creation_request_token->token }}">
@include('parts.captcha')
{!! Form::submit('I\'m not a robot', ['class' => 'btn btn-primary btn-centered']) !!}
{!! Form::close() !!}
<input class="btn btn-primary" type="submit" value="I\'m not a robot">
</form>
</div>
</div>
@endsection

View file

@ -67,9 +67,11 @@
<img src="{{ route('auth_tokens.qrcode', ['token' => $authToken->token]) }}">
@endforeach
{!! Form::open(['route' => 'account.auth_tokens.create']) !!}
<form method="POST" action="{{ route('account.auth_tokens.create') }}" accept-charset="UTF-8">
@csrf
<button type="submit" class="btn btn-primary">Generate</button>
{!! Form::close() !!}-->
</form>-->
</div>
@ -79,16 +81,18 @@
<p>You can generate an API key and use it to request the different API endpoints, <a href="{{ route('api') }}">check
the related API documentation</a> to know how to use that key.</p>
{!! Form::open(['route' => 'account.api_key.generate']) !!}
<form method="POST" action="{{ route('account.api_key.generate') }}" accept-charset="UTF-8">
@csrf
<div>
<input readonly class="form-control" placeholder="No key yet, press Generate"
<input readonly placeholder="No key yet, press Generate"
@if ($account->apiKey) value="{{ $account->apiKey->key }}" @endif>
<label>Key</label>
</div>
<div>
<button type="submit" class="btn btn-primary">Generate</button>
</div>
{!! Form::close() !!}
</form>
</div>
@include('parts.account_variables', ['account' => $account])

View file

@ -1,22 +1,23 @@
@extends('layouts.main')
@section('content')
<h2>Delete my account</h2>
<h2>Delete my account</h2>
<form method="POST" action="{{ route('account.destroy') }}" accept-charset="UTF-8">
@csrf
{!! Form::open(['route' => 'account.destroy', 'method' => 'delete']) !!}
@method('delete')
<p>You are going to permanently delete your account.</p>
<p>Please enter your complete username to confirm: <b>{{ $account->identifier }}</b>.</p>
<p>You are going to permanently delete your account.</p>
<p>Please enter your complete username to confirm: <b>{{ $account->identifier }}</b>.</p>
<div class="form-group">
{!! Form::label('identifier', 'Username') !!}
{!! Form::text('identifier', old('identifier'), ['class' => 'form-control', 'placeholder' => 'bob@example.net', 'required']) !!}
</div>
<div>
<label for="identifier">Username</label>
<input placeholder="bob@example.net" name="identifier" type="text" value="{{ old('identifier') }}">
</div>
{!! Form::hidden('identifier_confirm', $account->identifier) !!}
<input name="identifier_confirm" type="hidden" value="{{ $account->identifier }}">
{!! Form::submit('Delete', ['class' => 'btn btn-danger btn-centered']) !!}
{!! Form::close() !!}
@endsection
<input class="btn" type="submit" value="Delete">
</form>
@endsection

View file

@ -10,19 +10,21 @@
<p>No email yet</p>
@endif
{!! Form::open(['route' => 'account.email.request_update']) !!}
<div class="form-group">
{!! Form::email('email', old('email'), ['class' => 'form-control', 'placeholder' => 'bob@example.net', 'required']) !!}
{!! Form::label('email', 'New email') !!}
<form method="POST" action="{{ route('account.email.request_update') }}" accept-charset="UTF-8">
@csrf
<div>
<input type="email" name="email" value="{{ old('email') }}" placeholder="bob@example.net" required>
<label for="email">New email</label>
</div>
<div class="form-group">
{!! Form::email('email_confirmation', old('email_confirm'), ['class' => 'form-control', 'placeholder' => 'bob@example.net', 'required']) !!}
{!! Form::label('email_confirmation', 'Email confirmation') !!}
<div>
<input type="email" name="email_confirmation" value="{{ old('email_confirm') }}" placeholder="bob@example.net" required>
<label for="email_confirmation">Email confirmation</label>
</div>
{!! Form::hidden('email_current', $account->email) !!}
<input name="email_current" type="hidden" value="{{ $account->email }}">
{!! Form::submit('Change', ['class' => 'btn btn-primary btn-centered']) !!}
{!! Form::close() !!}
<input class="btn btn-primary" type="submit" value="Change">
</form>
@endsection

View file

@ -11,31 +11,30 @@
@endif
</h1>
{!! Form::open(['route' => 'account.email.request_change']) !!}
<form method="POST" action="{{ route('account.email.request_change') }}" accept-charset="UTF-8">
@csrf
<div class="large">
@if ($account->email)
<p>Please enter the new email address that you would like to link to your account.</p>
@else
<p>The verification code is invalid.</p>
<p>Please enter again your email address to receive a new code.</p>
@endif
</div>
<div class="large">
@if ($account->email)
<p>Please enter the new email address that you would like to link to your account.</p>
@else
<p>The verification code is invalid.</p>
<p>Please enter again your email address to receive a new code.</p>
@endif
</div>
<div class="large">
{!! Form::email('email', null, ['placeholder' => 'email@server.tld', 'required']) !!}
{!! Form::label('email', 'Email') !!}
@include('parts.errors', ['name' => 'email'])
</div>
<div class="large">
<input type="email" name="email" value="" placeholder="email@server.tld" required>
<label for="email">Email</label>
@include('parts.errors', ['name' => 'email'])
</div>
@include('parts.captcha')
@include('parts.captcha')
<div class="large">
{!! Form::submit('Verify', ['class' => 'btn oppose']) !!}
</div>
{!! Form::close() !!}
<div class="large">
<input class="btn oppose" type="submit" value="Verify">
</div>
</form>
</section>
<section class="on_desktop">

View file

@ -4,7 +4,8 @@
<section>
<h1 style="margin-bottom: 4rem;"><i class="material-icons">account_circle</i> Validate your email</h1>
{!! Form::open(['route' => 'account.email.update']) !!}
<form method="POST" action="{{ route('account.email.update') }}" accept-charset="UTF-8">
@csrf
<div class="large">
<p>A verification code was sent by email on <b>{{ $emailChangeCode->email }}</b>.</p>
@ -23,7 +24,7 @@
<input class="btn" type="submit" value="Validate">
</div>
{!! Form::close() !!}
</form>
<div class="large" style="margin-top: 2rem;">
<p>

View file

@ -8,37 +8,33 @@
@parsedown(config('instance.intro_registration'))
@endif
@if (Auth::check())
@include('parts.already_auth')
@else
<form style="margin-top: 3rem; margin-bottom: 3rem;" method="POST" action="{{ route('account.authenticate') }}" accept-charset="UTF-8">
@csrf
<div>
@if (config('app.phone_authentication'))
<input placeholder="username or phone number" required="" name="username" type="text"
value="{{ old('username') }}">
<label for="username">Username or phone number</label>
@else
<input placeholder="username" required="" name="username" type="text"
value="{{ old('username') }}">
<label for="username">Username</label>
@endif
</div>
<div class="on_desktop"></div>
<div>
<input placeholder="myPassword" required="" name="password" type="password" value="">
<label for="password">Password</label>
</div>
<div>
<input class="btn" type="submit" value="Login">
</div>
<form style="margin-top: 3rem; margin-bottom: 3rem;" method="POST" action="{{ route('account.authenticate') }}" accept-charset="UTF-8">
@csrf
<div>
@if (config('app.phone_authentication'))
<input placeholder="username or phone number" required="" name="username" type="text"
value="{{ old('username') }}">
<label for="username">Username or phone number</label>
@else
<input placeholder="username" required="" name="username" type="text"
value="{{ old('username') }}">
<label for="username">Username</label>
@endif
</div>
<div class="on_desktop"></div>
<div>
<input placeholder="myPassword" required="" name="password" type="password" value="">
<label for="password">Password</label>
</div>
<div>
<input class="btn" type="submit" value="Login">
</div>
</form>
</form>
<br />
<br />
@include('parts.recovery')
@endif
@include('parts.recovery')
@if (publicRegistrationEnabled())
<br />

View file

@ -1,29 +1,29 @@
@extends('layouts.main')
@section('content')
@if ($account->passwords()->count() > 0)
<h2>Change my account password</h2>
@else
<h2>Set my account password</h2>
@endif
@if ($account->passwords()->count() > 0)
<h2>Change my account password</h2>
@else
<h2>Set my account password</h2>
@endif
<form method="POST" action="{{ route('account.password.update') }}" accept-charset="UTF-8">
@csrf
{!! Form::open(['route' => 'account.password.update']) !!}
<div>
<input type="password" name="password" required>
<label for="password">New password</label>
</div>
<div>
<input type="password_confirmation" name="password_confirmation" required>
<label for="password_confirmation">Password confirmation</label>
</div>
<div>
<input type="checkbox" name="password_sha256" checked>
<label for="password_sha256">Use a SHA-256 encrypted password. This stronger password might not work with some
old SIP clients</label>
</div>
<div class="form-group">
{!! Form::label('password', 'New password') !!}
{!! Form::password('password', ['class' => 'form-control', 'required']) !!}
</div>
<div class="form-group">
{!! Form::label('password_confirmation', 'Password confirmation') !!}
{!! Form::password('password_confirmation', ['class' => 'form-control', 'required']) !!}
</div>
<div class="form-check">
{!! Form::checkbox('password_sha256', 'checked', $account->passwords()->where('algorithm', 'SHA-256')->exists(), ['class' => 'form-check-input']) !!}
{!! Form::label('password_sha256', 'Use a SHA-256 encrypted password. This stronger password might not work with some old SIP clients.', ['class' => 'form-check-label']) !!}
</div>
{!! Form::submit('Change', ['class' => 'btn btn-primary btn-centered']) !!}
{!! Form::close() !!}
@endsection
<input class="btn btn-primary" type="submit" value="Change">
</form>
@endsection

View file

@ -11,7 +11,8 @@
@endif
</h1>
{!! Form::open(['route' => 'account.phone.request_change']) !!}
<form method="POST" action="{{ route('account.phone.request_change') }}" accept-charset="UTF-8">
@csrf
<div class="large">
@if ($account->phone)
@ -23,18 +24,18 @@
</div>
<div class="large">
{!! Form::text('phone', null, ['placeholder' => '+12345678', 'required']) !!}
{!! Form::label('phone', 'Phone') !!}
<input placeholder="+12345678" name="phone" type="text" value="">
<label for="phone">Phone</label>
@include('parts.errors', ['name' => 'phone'])
</div>
@include('parts.captcha')
<div class="large">
{!! Form::submit('Verify', ['class' => 'btn oppose']) !!}
<input class="btn oppose" type="submit" value="Verify">
</div>
{!! Form::close() !!}
</form>
</section>
<section class="on_desktop">

View file

@ -4,7 +4,8 @@
<section>
<h1><i class="material-icons">account_circle</i> Validate your phone number</h1>
{!! Form::open(['route' => 'account.phone.update']) !!}
<form method="POST" action="{{ route('account.phone.update') }}" accept-charset="UTF-8">
@csrf
<div class="large">
<p>A verification code was sent by SMS on <b>{{ $phoneChangeCode->phone }}</b>.</p>
@ -23,7 +24,7 @@
<input class="btn" type="submit" value="Validate">
</div>
{!! Form::close() !!}
</form>
<div class="large" style="margin-top: 2rem;">
<p>

View file

@ -4,17 +4,19 @@
<section>
<h1><i class="material-icons">account_circle</i> Account recovery</h1>
{!! Form::open(['route' => 'account.recovery.confirm']) !!}
<form method="POST" action="{{ route('account.recovery.confirm') }}" accept-charset="UTF-8">
@csrf
<p class="large">Enter the pin code you received to recover your account.</p>
<div class="large">
{!! Form::text('code', old('code'), ['placeholder' => '1234', 'required']) !!}
{!! Form::label('code', 'Code') !!}
{!! Form::hidden('account_id', $account_id) !!}
<input placeholder="1234" name="code" type="text" value="{{ old('code') }}">
<label for="code">Code</label>
<input name="account_id" type="hidden" value="{{ $account_id }}">
</div>
<div class="large">
{!! Form::submit('Login', ['class' => 'btn oppose']) !!}
<input class="btn oppose" type="submit" value="Login">
</div>
{!! Form::close() !!}
</form>
</section>
<section class="on_desktop">
<img src="/img/lock.svg">

View file

@ -4,30 +4,32 @@
<section>
<h1><i class="material-icons">account_circle</i> Account recovery</h1>
<div>
{!! Form::open(['route' => 'account.recovery.send']) !!}
<form method="POST" action="{{ route('account.recovery.send') }}" accept-charset="UTF-8">
@csrf
@if ($method == 'email')
<p class="large">Enter your email account to recover it.</p>
<div class="large">
{!! Form::email('email', old('email'), ['placeholder' => 'bob@example.com', 'required']) !!}
{!! Form::label('email', 'Email') !!}
<input type="email" name="email" value="{{ old('email') }}" placeholder="bob@example.com" required>
<label for="email">Email</label>
@include('parts.errors', ['name' => 'email'])
@include('parts.errors', ['name' => 'identifier'])
</div>
@if (config('app.account_email_unique') == false)
<div>
{!! Form::text('username', old('username'), ['placeholder' => 'username', 'required']) !!}
{!! Form::label('username', 'Username') !!}
<input placeholder="username" name="username" type="text" value="{{ old('username') }}">
<label for="username">Username</label>
</div>
<div>
{!! Form::text('username', $domain, ['disabled']) !!}
<input type="text" name="username" value="{{ $domain }}" disabled>
</div>
@endif
@elseif($method == 'phone')
<p class="large">Enter your phone number to recover your account.</p>
<div>
{!! Form::text('phone', old('phone'), ['placeholder' => '+123456789', 'required']) !!}
{!! Form::label('phone', 'Phone') !!}
<input placeholder="+123456789" name="phone" type="text" value="{{ old('phone') }}">
<label for="phone">Phone</label>
@include('parts.errors', ['name' => 'phone'])
@include('parts.errors', ['name' => 'identifier'])
</div>
@ -36,9 +38,9 @@
@include('parts.captcha')
<div class="large">
{!! Form::submit('Send the code', ['class' => 'btn oppose']) !!}
<input class="btn oppose" type="submit" value="Send the code">
</div>
{!! Form::close() !!}
</form>
</div>
</section>
<section class="on_desktop">

View file

@ -9,11 +9,12 @@
</p>
@include('parts.tabs.register')
{!! Form::open(['route' => 'account.store']) !!}
<form method="POST" action="{{ route('account.store') }}" accept-charset="UTF-8">
@csrf
<div>
{!! Form::text('username', old('username'), ['placeholder' => 'username', 'required']) !!}
{!! Form::label('username', 'Username') !!}
<input placeholder="username" name="username" type="text" value="{{ old('username') }}">
<label for="username">Username</label>
@include('parts.errors', ['name' => 'username'])
</div>
@ -22,13 +23,13 @@
</div>
<div>
{!! Form::email('email', old('email'), ['placeholder' => 'bob@example.net', 'required']) !!}
{!! Form::label('email', 'Email') !!}
<input type="email" name="email" value="{{ old('email') }}" placeholder="bob@example.net" required>
<label for="email">Email</label>
@include('parts.errors', ['name' => 'email'])
</div>
<div>
{!! Form::email('email_confirmation', old('email_confirm'), ['placeholder' => 'bob@example.net', 'required']) !!}
{!! Form::label('email_confirmation', 'Confirm email') !!}
<input type="email" name="email_confirmation" value="{{ old('email_confirm') }}" placeholder="bob@example.net" required>
<label for="email_confirmation">Confirm email</label>
@include('parts.errors', ['name' => 'email_confirmation'])
</div>
@ -45,18 +46,18 @@
@if (!empty(config('app.newsletter_registration_address')))
<div class="large checkbox">
{!! Form::checkbox('newsletter', 'true', false, ['class' => 'form-check-input', 'id' => 'newsletter']) !!}
<label class="form-check-label" for="newsletter">I would like to subscribe to the newsletter</a></label>
<input id="newsletter" name="newsletter" type="checkbox" value="true">
<label for="newsletter">I would like to subscribe to the newsletter</a></label>
</div>
@endif
@include('parts.terms')
<div class="large">
{!! Form::submit('Register', ['class' => 'btn oppose']) !!}
<input class="btn oppose" type="submit" value="Register">
</div>
{!! Form::close() !!}
</form>
</section>
<section class="on_desktop">

View file

@ -9,11 +9,12 @@
</p>
@include('parts.tabs.register')
{!! Form::open(['route' => 'account.store']) !!}
<form method="POST" action="{{ route('account.store') }}" accept-charset="UTF-8">
@csrf
<div>
{!! Form::text('username', old('username'), ['placeholder' => 'username', 'required']) !!}
{!! Form::label('username', 'Username') !!}
<input placeholder="username" name="username" type="text" value="{{ old('username') }}">
<label for="username">Username</label>
@include('parts.errors', ['name' => 'username'])
</div>
<div>
@ -21,8 +22,8 @@
</div>
<div>
{!! Form::text('phone', old('phone'), ['placeholder' => '+123456789', 'required']) !!}
{!! Form::label('phone', 'Phone number') !!}
<input placeholder="+123456789" name="phone" type="text" value="{{ old('phone') }}">
<label for="phone">Phone number</label>
@include('parts.errors', ['name' => 'phone'])
</div>
<div></div>
@ -42,10 +43,10 @@
@include('parts.terms')
<div class="large">
{!! Form::submit('Register', ['class' => 'btn oppose']) !!}
<input class="btn oppose" type="submit" value="Register">
</div>
{!! Form::close() !!}
</form>
</section>
<section class="on_desktop">

View file

@ -1,41 +1,38 @@
@extends('layouts.main')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $account->id) }}">{{ $account->identifier }}</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Types
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $account->id) }}">{{ $account->identifier }}</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Types
</li>
@endsection
@section('content')
<h2>Add a Type to the Account</h2>
<h2>Add a Type to the Account</h2>
@if ($account_types->count() == 0)
<p>
No Account Type to add
</p>
@else
{!! Form::model($account, [
'route' => ['admin.account.account_type.store', $account->id],
'method' => 'post'
]) !!}
<div class="form-row">
<div class="form-group col-md-12">
{!! Form::label('account_type_id', 'Account Type') !!}
{!! Form::select('account_type_id', $account_types, null, ['class' => 'form-control']); !!}
</div>
</div>
{!! Form::submit('Add', ['class' => 'btn btn-success btn-centered']) !!}
{!! Form::close() !!}
@endif
@endsection
@if ($account_types->count() == 0)
<p>
No Account Type to add
</p>
@else
<form method="POST" action="{{ route('admin.account.account_type.store', $account->id) }}" accept-charset="UTF-8">
@csrf
<div class="select">
<select name="account_type_id">
@foreach ($account_types as $key => $value)
<option value="{{ $key }}">{{ $value }}</option>
@endforeach
</select>
<label for="account_type_id">Account Type</label>
</div>
<div>
<input class="btn btn-success" type="submit" value="Add">
</div>
</form>
@endif
@endsection

View file

@ -1,45 +1,39 @@
@extends('layouts.main')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $account->id) }}">{{ $account->identifier }}</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Actions
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $account->id) }}">{{ $account->identifier }}</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Actions
</li>
@endsection
@section('content')
@if ($action->id)
<h2>Edit an account action</h2>
@else
<h2>Create an account action</h2>
@endif
@if ($action->id)
<h2>Edit an account action</h2>
@else
<h2>Create an account action</h2>
@endif
{!! Form::model($action, [
'route' => $action->id
? ['admin.account.action.update', $action->account->id, $action->id]
: ['admin.account.action.store', $account->id],
'method' => $action->id
? 'put'
: 'post'
]) !!}
<div class="form-row">
<div class="form-group col-md-12">
{!! Form::label('key', 'Key') !!}
{!! Form::text('key', $action->key, ['class' => 'form-control', 'placeholder' => 'action_key']); !!}
<form method="POST"
action="{{ $action->id ? route('admin.account.acton.update', [$action->account->id, $action->id]) : route('admin.account.action.store') }}"
accept-charset="UTF-8">
@method($action->id ? 'put' : 'post')
@csrf
<div>
<input type="text" name="key" value="{{ $action->key }}" placeholder="action_key">
<label for="key">Key</label>
</div>
<div class="form-group col-md-12">
{!! Form::label('code', 'Code') !!}
{!! Form::text('code', $action->code, ['class' => 'form-control', 'placeholder' => '12ab45']); !!}
<div>
<input type="text" name="code" value="{{ $action->code }}" placeholder="12ab45">
<label for="code">Code</label>
</div>
</div>
{!! Form::submit(($action->id) ? 'Update' : 'Create', ['class' => 'btn btn-success btn-centered']) !!}
{!! Form::close() !!}
@endsection
<div>
<input class="btn btn-success" type="submit" value="{{ $action->id ? 'Update' : 'Create' }}">
</div>
</form>
@endsection

View file

@ -1,31 +1,35 @@
@extends('layouts.main')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $action->account) }}">{{ $action->account->identifier }}</a>
</li>
<li class="breadcrumb-item active">
Actions
</li>
<li class="breadcrumb-item active" aria-current="page">Delete</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $action->account) }}">{{ $action->account->identifier }}</a>
</li>
<li class="breadcrumb-item active">
Actions
</li>
<li class="breadcrumb-item active" aria-current="page">Delete</li>
@endsection
@section('content')
<h2>Delete an account action</h2>
<h2>Delete an account action</h2>
<form method="POST" action="{{ route('admin.account.action.destroy', [$action->account, $action]) }}"
accept-charset="UTF-8">
@csrf
@method('delete')
{!! Form::open(['route' => ['admin.account.action.destroy', $action->account, $action], 'method' => 'delete']) !!}
<div>
<p>You are going to permanently delete the following account action. Please confirm your action.</p>
<p><b>{{ $action->key }}</b></p>
</div>
<input name="account_id" type="hidden" value="{{ $action->account->id }}">
<input name="action_id" type="hidden" value="{{ $action->id }}">
<p>You are going to permanently delete the following account action. Please confirm your action.</p>
<p><b>{{ $action->key }}</b></p>
{!! Form::hidden('account_id', $action->account->id) !!}
{!! Form::hidden('action_id', $action->id) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger btn-centered']) !!}
{!! Form::close() !!}
@endsection
<div>
<input class="btn" type="submit" value="Delete">
</div>
</form>
@endsection

View file

@ -1,31 +1,34 @@
@extends('layouts.main')
@section('breadcrumb')
<li class="breadcrumb-item"'>
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $account) }}">{{ $account->identifier }}</a>
</li>
<li class="breadcrumb-item active">
Contacts
</li>
<li class="breadcrumb-item active" aria-current="page">Delete</li>
<li class="breadcrumb-item"'>
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.edit', $account) }}">{{ $account->identifier }}</a>
</li>
<li class="breadcrumb-item active">
Contacts
</li>
<li class="breadcrumb-item active" aria-current="page">Delete</li>
@endsection
@section('content')
<h2>Delete an account contact</h2>
<h2>Delete an account contact</h2>
<form method="POST" action="{{ route('admin.account.contact.destroy', [$account]) }}" accept-charset="UTF-8">
@csrf
@method('delete')
{!! Form::open(['route' => ['admin.account.contact.destroy', $account], 'method' => 'delete']) !!}
<div>
<p>You are going to remove the following contact from the contact list. Please confirm your action.</p>
<p><b>{{ $contact->identifier }}</b></p>
</div>
<p>You are going to remove the following contact from the contact list. Please confirm your action.</p>
<p><b>{{ $contact->identifier }}</b></p>
{!! Form::hidden('account_id', $account->id) !!}
{!! Form::hidden('contact_id', $contact->id) !!}
{!! Form::submit('Remove', ['class' => 'btn btn-danger btn-centered']) !!}
{!! Form::close() !!}
@endsection
<input name="account_id" type="hidden" value="{{ $account->id }}">
<input name="contact_id" type="hidden" value="{{ $contact->id }}">
<div>
<input class="btn" type="submit" value="Remove">
</div>
</form>
@endsection

View file

@ -20,13 +20,13 @@
</header>
<p title="{{ $account->updated_at }}">Updated on {{ $account->updated_at->format('d/m/Y') }}
@include('parts.tabs', [
'items' => [
route('admin.account.edit', $account->id, ['type' => 'messages']) => 'Information',
route('admin.account.device.index', $account->id, ['type' => 'accounts']) => 'Devices',
],
])
@else
@include('parts.tabs', [
'items' => [
route('admin.account.edit', $account->id, ['type' => 'messages']) => 'Information',
route('admin.account.device.index', $account->id, ['type' => 'accounts']) => 'Devices',
],
])
@else
<header>
<h1><i class="material-icons">people</i> Create an account</h1>
<a href="{{ route('admin.account.index') }}" class="btn btn-secondary oppose">Cancel</a>
@ -72,7 +72,6 @@
@include('parts.errors', ['name' => 'password_confirmation'])
</div>
<div>
<input placeholder="Email" name="email" type="email" value="{{ $account->email }}">
<label for="email">Email</label>
@ -205,7 +204,7 @@
<b>Identifier:</b> {{ $account->externalAccount->identifier }}<br />
</p>
@else
<a class="btn btn-sm @if ($external_accounts_count == 0) disabled @endif"
<a class="btn @if ($external_accounts_count == 0) disabled @endif"
href="{{ route('admin.account.external_account.attach', $account->id) }}">Attach an External Account
({{ $external_accounts_count }} left)</a>
@endif
@ -220,9 +219,9 @@
<th scope="row">{{ $action->key }}</th>
<td>{{ $action->code }}</td>
<td>
<a class="btn btn-sm mr-2"
<a class="btn"
href="{{ route('admin.account.action.edit', [$account, $action->id]) }}">Edit</a>
<a class="btn btn-sm mr-2"
<a class="btn"
href="{{ route('admin.account.action.delete', [$account, $action->id]) }}">Delete</a>
</td>
</tr>
@ -230,7 +229,7 @@
</tbody>
</table>
<a class="btn btn-sm" href="{{ route('admin.account.action.create', $account) }}">Add</a>
<a class="btn" href="{{ route('admin.account.action.create', $account) }}">Add</a>
@else
<p>To manage actions, you must configure the DTMF protocol in the account settings.</p>
@endif
@ -243,19 +242,18 @@
<tr>
<th scope="row">{{ $type->key }}</th>
<td>
{!! Form::open(['route' => ['admin.account.account_type.destroy', $account, $type->id], 'method' => 'delete']) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-sm mr-2']) !!}
{!! Form::close() !!}
<form method="POST" action="{{ route('admin.account.account_type.destroy', [$account, $type->id]) }}" accept-charset="UTF-8">
@csrf
@method('delete')
<input class="btn" type="submit" value="Delete">
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<a class="btn btn-sm" href="{{ route('admin.account.account_type.create', $account) }}">Add</a>
<a class="btn" href="{{ route('admin.account.account_type.create', $account) }}">Add</a>
@endif
@endsection

View file

@ -10,19 +10,22 @@
@section('content')
<h2>Delete an account</h2>
{!! Form::open(['route' => 'admin.account.destroy', 'method' => 'delete']) !!}
<form method="POST" action="{{ route('admin.account.destroy') }}" accept-charset="UTF-8">
@csrf
@method('delete')
<div class="large">
<p>You are going to permanently delete the following account. Please confirm your action.<br />
<b>{{ $account->identifier }}</b>
</p>
{!! Form::hidden('account_id', $account->id) !!}
<input name="account_id" type="hidden" value="{{ $account->id }}">
</div>
<div>
{!! Form::submit('Delete', ['class' => 'btn']) !!}
<input class="btn" type="submit" value="Delete">
</div>
{!! Form::close() !!}
</form>
@endsection

View file

@ -42,7 +42,7 @@
<td>{{ $device->user_agent }}</td>
<td>
<a type="button"
class="btn btn-danger"
class="btn"
href="{{ route('admin.account.device.delete', [$account, $device->uuid]) }}">
Delete
</a>
@ -52,5 +52,4 @@
</tbody>
</table>
@endsection

View file

@ -1,38 +1,33 @@
@extends('layouts.main')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
<a href="{{ route('admin.account.type.index') }}">Types</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
<a href="{{ route('admin.account.type.index') }}">Types</a>
</li>
@endsection
@section('content')
@if ($type->id)
<h2>Edit an account type</h2>
@else
<h2>Create an account type</h2>
@endif
@if ($type->id)
<h2>Edit an account type</h2>
@else
<h2>Create an account type</h2>
@endif
{!! Form::model($type, [
'route' => $type->id
? ['admin.account.type.update', $type->id]
: ['admin.account.type.store'],
'method' => $type->id
? 'put'
: 'post'
]) !!}
<div class="form-row">
<div class="form-group col-md-12">
{!! Form::label('key', 'Key') !!}
{!! Form::text('key', $type->key, ['class' => 'form-control', 'placeholder' => 'type_key']); !!}
<form method="POST"
action="{{ $type->id ? route('admin.account.type.update', $type->id) : route('admin.account.type.store') }}"
accept-charset="UTF-8">
@method($type->id ? 'put' : 'post')
@csrf
<div>
<input type="text" name="key" value="{{ $type->key }}" placeholder="type_key">
<label for="key">Key</label>
</div>
</div>
{!! Form::submit(($type->id) ? 'Update' : 'Create', ['class' => 'btn btn-success btn-centered']) !!}
{!! Form::close() !!}
@endsection
<div>
<input class="btn btn-success" type="submit" value="{{ $type->id ? 'Update' : 'Create' }}">
</div>
</form>
@endsection

View file

@ -1,28 +1,31 @@
@extends('layouts.main')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.type.index') }}">Types</a>
</li>
<li class="breadcrumb-item">
{{ $type->key }}
</li>
<li class="breadcrumb-item active" aria-current="page">Delete</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.index') }}">Accounts</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('admin.account.type.index') }}">Types</a>
</li>
<li class="breadcrumb-item">
{{ $type->key }}
</li>
<li class="breadcrumb-item active" aria-current="page">Delete</li>
@endsection
@section('content')
<h2>Delete an account type</h2>
<h2>Delete an account type</h2>
<form method="POST" action="{{ route('admin.account.type.destroy', [$type->id]) }}" accept-charset="UTF-8">
@csrf
@method('delete')
{!! Form::open(['route' => ['admin.account.type.destroy', $type->id], 'method' => 'delete']) !!}
<p>You are going to permanently delete the following type. Please confirm your action.</p>
<p><b>{{ $type->key }}</b></p>
{!! Form::submit('Delete', ['class' => 'btn btn-danger btn-centered']) !!}
{!! Form::close() !!}
@endsection
<div>
<p>You are going to permanently delete the following type. Please confirm your action.</p>
<p><b>{{ $type->key }}</b></p>
</div>
<div>
<input class="btn" type="submit" value="Delete">
</div>
</form>
@endsection

View file

@ -32,8 +32,8 @@
{{ $type->key }}
</td>
<td>
<a class="btn btn-sm mr-2" href="{{ route('admin.account.type.edit', [$type->id]) }}">Edit</a>
<a class="btn btn-sm mr-2" href="{{ route('admin.account.type.delete', [$type->id]) }}">Delete</a>
<a class="btn" href="{{ route('admin.account.type.edit', [$type->id]) }}">Edit</a>
<a class="btn" href="{{ route('admin.account.type.delete', [$type->id]) }}">Delete</a>
</td>
</tr>
@endforeach

View file

@ -58,7 +58,6 @@ A `from` (consisting of the user SIP address, prefixed with `sip:`) header is re
> from: sip:foobar@sip.example.org
>
< HTTP 401
< content-type: application/json
< www-authenticate: Digest realm=test,qop=auth,algorithm=MD5,nonce="{nonce}",opaque="{opaque}"
@ -87,7 +86,6 @@ An `account_creation_request_token` is a unique token that can be validated and
Create and return an `account_creation_request_token` that should then be validated to be used.
## Account Creation Tokens
An `account_creation_token` is a unique token that allow the creation of a **unique** account.
@ -139,7 +137,6 @@ Return `404` if the token is non existing or invalid.
@if(config('app.dangerous_endpoints'))**Enabled on this instance**@else**Not enabled on this instance**@endif
<span class="badge badge-success">Public</span>
<span class="badge badge-warning">Unsecure endpoint</span>
Create an account.
@ -177,7 +174,6 @@ Return `404` if the account doesn't exists.
### `GET /accounts/{phone}/info-by-phone`
@if(config('app.dangerous_endpoints'))**Enabled on this instance**@else**Not enabled on this instance**@endif
<span class="badge badge-success">Public</span>
<span class="badge badge-warning">Unsecure endpoint</span>
Retrieve public information about the account.
@ -188,7 +184,6 @@ Return `phone: true` if the returned account has a phone number.
### `POST /accounts/recover-by-phone`
@if(config('app.dangerous_endpoints'))**Enabled on this instance**@else**Not enabled on this instance**@endif
<span class="badge badge-success">Public</span>
<span class="badge badge-warning">Unsecure endpoint</span>
Send a SMS with a recovery PIN code to the `phone` number provided.
@ -202,7 +197,6 @@ JSON parameters:
### `GET /accounts/{sip}/recover/{recover_key}`
@if(config('app.dangerous_endpoints'))**Enabled on this instance**@else**Not enabled on this instance**@endif
<span class="badge badge-success">Public</span>
<span class="badge badge-warning">Unsecure endpoint</span>
Activate the account if the correct `recover_key` is provided.

View file

@ -1,4 +0,0 @@
<div class="alert alert-primary" role="alert">
<a class="float-right" href="{{ route('account.logout') }}">Logout</a>
You are already authenticated
</div>

View file

@ -1,22 +0,0 @@
@if (isset($errors) && $errors->any())
<div class="alert alert-danger">
<ul class="mb-0 pl-2">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (Session::has('error'))
<div class="alert alert-danger">
{{Session::get('error')}}
</div>
@endif
@if (Session::has('success'))
<div class="alert alert-success">
{{Session::get('success')}}
</div>
@endif

View file

@ -1,5 +1,5 @@
<div class="large checkbox">
{!! Form::checkbox('terms', 'true', false, ['id' => 'terms']) !!}
<input id="terms" name="terms" type="checkbox" value="false">
<label for="terms">
I accept the
<a href="{{ config('app.terms_of_use_url') }}">Terms and Conditions</a>

View file

@ -190,7 +190,6 @@ class ApiAccountContactTest extends TestCase
->post($this->contactsListsRoute . '/' . $contactsList->id . '/contacts/1234')
->assertStatus(404);
$this->keyAuthenticated($admin->account)
->post($this->route . '/' . $admin->account->id . '/contacts_lists/' . $contactsList->id)
->assertStatus(200);

View file

@ -669,7 +669,6 @@ class ApiAccountTest extends TestCase
->assertStatus(422)
->assertJsonValidationErrors(['account_creation_token']);
$this->json($this->method, $this->route . '/recover-by-phone', [
'phone' => $phone,
'account_creation_token' => 'wrong'

View file

@ -55,7 +55,6 @@ class ApiAccountTypeTest extends TestCase
->assertJsonValidationErrorFor('key')
->assertStatus(422);
// Missing key
$this->keyAuthenticated($admin->account)
->json($this->method, $this->route, [])

View file

@ -23,7 +23,6 @@
%define apache_conf_path /etc/httpd/conf.d
%endif
Name: bc-flexisip-account-manager
Version: MAKE_FILE_VERSION_SEARCH
Release: %{build_number}%{?dist}