add first login logic

This commit is contained in:
Mathieu Lagace
2020-07-31 17:29:47 -04:00
parent 039b09b681
commit 8158f8a8aa
22 changed files with 655 additions and 393 deletions

View File

@@ -61,10 +61,14 @@ class Course extends Model
{
if (\App\User::find($this->user_id)) {
return \App\User::find($this->user_id)->fullname();
} else {
if (is_numeric($this->user_id)) {
return 'Utilisateur inconnu';
} else {
return $this->user_id;
}
}
}
public function ocom()
{

View File

@@ -2,8 +2,11 @@
namespace App\Http\Controllers;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\Request;
use \App\Log;
use Illuminate\View\View;
class AdminController extends Controller
{
@@ -20,7 +23,7 @@ class AdminController extends Controller
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
* @return Application|Factory|View
*/
public function index()
{
@@ -29,6 +32,39 @@ class AdminController extends Controller
return view('admin.dashboard',['futureEvent' => \App\Event::future()->take(3),'userClasse' => \Auth::user()->futureCourses()->forPage(1,6)]);
}
public function setup()
{
if (\Auth::user()->use_default_psw == true)
{
return view('admin.user.profil.setup');
}
return redirect('/admin');
}
public function saveSetup()
{
$user = \Auth::user();
$user->firstname = \request('firstname');
$user->lastname = \request('lastname');
$user->password = bcrypt(request('psw'));
if (\request('address') != null)
{
$user->adress = \request('address');
}
if (\request('telephone') != null)
{
$user->telephone = \request('telephone');
}
if (\request('sexe') != null)
{
$user->sexe = \request('sexe');
}
$user->use_default_psw = false;
$user->save();
return redirect('/admin');
}
public function update()
{
clog('navigate','success','consulte les notes de mise à jours');

View File

@@ -147,7 +147,11 @@ class EventController extends Controller
}
$course->user_id = $instructor;
if (request('location_n'.$l.'_p'.$p) != null) {
$course->location = request('location_n'.$l.'_p'.$p);
} else {
$course->location = "";
}
$course->periode = $p;
$course->level = $l;

View File

@@ -216,7 +216,10 @@ class ScheduleController extends Controller
public function delete($id)
{
$event = \App\Event::find($id);
foreach ($event->courses as $course)
{
$course->delete();
}
$event->delete();
}
}

View File

@@ -49,13 +49,13 @@ class UserController extends Controller
$user->email = request('email');
if (request('adresse') == null) {
$user->adress = "Inconnu";
$user->adress = "";
} else {
$user->adress = request('adresse');
}
if (request('telephone') == null) {
$user->telephone = "Inconnu";
$user->telephone = "";
} else {
$user->telephone = request('telephone');
}
@@ -63,7 +63,7 @@ class UserController extends Controller
$user->sexe = request('sexe');
if (request('age') == null) {
$user->age = "Inconnu";
$user->age = "";
} else {
$user->age = request('age');
}
@@ -122,13 +122,13 @@ class UserController extends Controller
$user->email = request('email');
if (request('adresse') == null) {
$user->adress = "Inconnu";
$user->adress = "";
} else {
$user->adress = request('adresse');
}
if (request('telephone') == null) {
$user->telephone = "Inconnu";
$user->telephone = "";
} else {
$user->telephone = request('telephone');
}
@@ -136,7 +136,7 @@ class UserController extends Controller
$user->sexe = request('sexe');
if (request('age') == null) {
$user->age = "Inconnu";
$user->age = "";
} else {
$user->age = request('age');
}

View File

@@ -64,5 +64,6 @@ class Kernel extends HttpKernel
'perm' => \App\Http\Middleware\CheckPerm::class,
'fileperm' => \App\Http\Middleware\CheckFilePerm::class,
'courseperm' => \App\Http\Middleware\CheckCoursePerm::class,
'firstlogin' => \App\Http\Middleware\FirstLogin::class
];
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class FirstLogin
{
/**
* Handle an incoming request.
*
* @param Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->isMethod('get'))
{
if (\Auth::user()->use_default_psw == true)
{
return redirect('/admin/setup');
}
}
return $next($request);
}
}

View File

@@ -64,7 +64,7 @@ class TelescopeServiceProvider extends TelescopeApplicationServiceProvider
{
Gate::define('viewTelescope', function ($user) {
return in_array($user->email, [
//
'admin@exvps.ca'
]);
});
}

View File

@@ -29,7 +29,7 @@ return [
|
*/
'path' => env('TELESCOPE_PATH', 'telescope'),
'path' => env('TELESCOPE_PATH', 'admin/telescope'),
/*
|--------------------------------------------------------------------------
@@ -62,7 +62,7 @@ return [
|
*/
'enabled' => env('TELESCOPE_ENABLED', true),
'enabled' => env('TELESCOPE_ENABLED', false),
/*
|--------------------------------------------------------------------------
@@ -77,6 +77,7 @@ return [
'middleware' => [
'web',
'auth',
Authorize::class,
],

View File

@@ -20,12 +20,13 @@ class CreateUsersTable extends Migration
$table->string('email')->unique();
$table->string('password');
$table->string('rank_id')->default(1);
$table->string('adress')->default('unknown');
$table->string('telephone')->default('unknown');
$table->string('adress')->default('');
$table->string('telephone')->default('');
$table->string('age');
$table->string('avatar')->default('1');
$table->string('sexe');
$table->string('job_id')->default(6);
$table->boolean('use_default_psw')->default(true);
$table->string('api_token', 60)->unique()->default(str_shuffle(str_random(60)));
$table->rememberToken();
$table->timestamps();

View File

@@ -18,7 +18,7 @@ class UsersTableSeeder extends Seeder
'email' => 'visiteur@exvps.ca',
'password' => bcrypt('f329er8kl2jHJGHdEj12567'),
'rank_id' => '1',
'adress' => 'Inconnu',
'adress' => '',
'age' => '99',
'avatar' => '3',
'sexe' => 'm',
@@ -31,7 +31,7 @@ class UsersTableSeeder extends Seeder
'email' => 'admin@exvps.ca',
'password' => bcrypt('SuperAdmin'),
'rank_id' => '1',
'adress' => 'Inconnu',
'adress' => '',
'age' => '99',
'avatar' => '3',
'sexe' => 'm',

14
public/css/custom.css vendored
View File

@@ -1894,3 +1894,17 @@ tfoot > tr {
.overflow-auto {
overflow: auto;
}
.parsley-errors-list {
list-style: none;
padding: 0px;
color: #f44336;
}
.form-control {
padding-top: 15px;
}
.bootstrap-select {
margin-top: -12px;
}

55
public/js/plugins/parsley-extra.min.js vendored Normal file
View File

@@ -0,0 +1,55 @@
// Validation errors messages for Parsley
// Load this after Parsley
Parsley.addMessages('fr', {
defaultMessage: "Cette valeur semble non valide.",
type: {
email: "Cette valeur n'est pas une adresse email valide.",
url: "Cette valeur n'est pas une URL valide.",
number: "Cette valeur doit être un nombre.",
integer: "Cette valeur doit être un entier.",
digits: "Cette valeur doit être numérique.",
alphanum: "Cette valeur doit être alphanumérique."
},
notblank: "Cette valeur ne peut pas être vide.",
required: "Ce champ est requis.",
pattern: "Cette valeur semble non valide.",
min: "Cette valeur ne doit pas être inférieure à %s.",
max: "Cette valeur ne doit pas excéder %s.",
range: "Cette valeur doit être comprise entre %s et %s.",
minlength: "Cette chaîne est trop courte. Elle doit avoir au minimum %s caractères.",
maxlength: "Cette chaîne est trop longue. Elle doit avoir au maximum %s caractères.",
length: "Cette valeur doit contenir entre %s et %s caractères.",
mincheck: "Vous devez sélectionner au moins %s choix.",
maxcheck: "Vous devez sélectionner %s choix maximum.",
check: "Vous devez sélectionner entre %s et %s choix.",
equalto: "Cette valeur devrait être identique."
});
Parsley.setLocale('fr');
window.Parsley
.addValidator('password', {
requirementType: 'boolean',
validateString: function(value, requirement) {
console.log(/^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*])[\w!@#$%^&*]{8,}$/.test(value));
return /^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*])[\w!@#$%^&*]{8,}$/.test(value);
},
messages: {
fr: 'Le mot de passe doit contenir au moins 8 caractères, une lettre majuscule, une lettre minuscule, un chiffre et un caractères spécial'
}
});
window.Parsley.on('field:error', function (fieldInstance) {
var messages = ParsleyUI.getErrorsMessages(fieldInstance);
var errorMsg = messages.join(';');
fieldInstance.$element.parent().addClass('has-danger');
fieldInstance.$element.parent().removeClass('has-success');
});
window.Parsley.on('field:success', function (fieldInstance) {
if (fieldInstance.$element.val() != "") {
fieldInstance.$element.parent().removeClass('has-danger');
fieldInstance.$element.parent().addClass('has-success');
}
});

2
public/js/plugins/parsley.min.js vendored Normal file

File diff suppressed because one or more lines are too long

14
resources/custom.css vendored
View File

@@ -1894,3 +1894,17 @@ tfoot > tr {
.overflow-auto {
overflow: auto;
}
.parsley-errors-list {
list-style: none;
padding: 0px;
color: #f44336;
}
.form-control {
padding-top: 15px;
}
.bootstrap-select {
margin-top: -12px;
}

View File

@@ -16,6 +16,9 @@
</div>
</div>
<div class="card-body">
<div class="alert alert-danger" role="alert">
<i class="fas fa-exclamation-triangle text-white fa-2x mr-3"></i>Plusieurs fonctionnalité sont <strong>DÉSACTIVÉ</strong> le temps de les moderniser
</div>
<div class="row">
<div class="col-md-6">
<p>
@@ -41,16 +44,6 @@
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-plus"></i>
</div>
<div class="col m-auto text-left">
Ajout d'un lien avec Google Drive
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">

View File

@@ -4,25 +4,26 @@
<div class="col-md-12">
<div class="card">
<div class="card-header">
<strong class="card-title">Ajouter un utilisateur <a href="#"><i class="fa fa-question-circle" aria-hidden="true"></i>
<strong class="card-title">Ajouter un utilisateur <a href="#"><i class="fa fa-question-circle"
aria-hidden="true"></i>
</a></strong>
</div>
<div class="card-body">
<form action="/admin/user/add" method="post">
<form id="form" action="/admin/user/add" method="post">
@csrf
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="firstname">Prénom</label>
<input type="text" class="form-control" name="firstname" id="firstname" aria-describedby="helpId" placeholder="John" required>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="text" class="form-control" name="firstname" id="firstname"
aria-describedby="helpId" placeholder="John" required>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="lastname">Nom de famille</label>
<input type="text" class="form-control" name="lastname" id="lastname" aria-describedby="helpId" placeholder="Doe" required>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="text" class="form-control" name="lastname" id="lastname"
aria-describedby="helpId" placeholder="Doe" required>
</div>
</div>
</div>
@@ -33,15 +34,17 @@
<div class="col-6">
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" name="email" id="email" aria-describedby="emailHelp" placeholder="exemple@c-cms.cf" onkeyup="checkEmail()" required>
<small id="emailHelp" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="email" class="form-control" name="email" id="email"
aria-describedby="emailHelp" placeholder="exemple@exvps.ca" required>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="email">Confirmer l'addresse email</label>
<input type="email" class="form-control" name="emailc" id="emailc" aria-describedby="emailHelp" placeholder="exemple@c-cms.cf" onkeyup="checkEmail()" required>
<small id="emailHelp" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="email" class="form-control" name="emailc" id="emailc"
aria-describedby="emailHelp" placeholder="exemple@exvps.ca"
data-parsley-equalto="#email" required
data-parsley-error-message="Les emails ne sont pas identique">
</div>
</div>
</div>
@@ -49,7 +52,8 @@
<div class="col-6">
<div class="form-group">
<label for="adresse">Adresse</label>
<input type="text" class="form-control" name="adresse" id="adresse" aria-describedby="helpId" placeholder="14 ave Des Rue, Rimouski">
<input type="text" class="form-control" name="adresse" id="adresse"
aria-describedby="helpId" placeholder="14 ave Des Rue, Rimouski">
<small id="helpId" class="form-text text-muted"></small>
</div>
</div>
@@ -57,54 +61,55 @@
<div class="form-group">
<label for="telephone">Telephone</label>
<input type="tel"
class="form-control" name="telephone" id="telephone" aria-describedby="helpId" placeholder="(XXX) XXX-XXXX">
<small id="helpId" class="form-text text-muted"><span class="badge badge-info">Si vous souhaiter recevoir des notifications par SMS</span></small>
class="form-control" name="telephone" id="telephone" aria-describedby="helpId"
placeholder="213-546-5401" pattern="([0-9]{3}-[0-9]{3}-[0-9]{4})*"
data-parsley-error-message="Le numéro de téléphone est invalide">
</div>
</div>
</div>
<div class="row">
<div class="row mb-4">
<div class="col-3">
<div class="form-group">
<label for="sexe">Sexe</label>
<select class="form-control" name="sexe" id="sexe" required>
<select class="form-control selectpicker" data-style="btn btn-link" name="sexe"
id="sexe" required>
<option value="m">Homme</option>
<option value="f">Femme</option>
<option value="a">Autre</option>
</select>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="age">Age</label>
<input type="number" class="form-control" name="age" id="age" aria-describedby="helpId" placeholder="Age" min="0" max="100">
<div class="form-group" style="margin-top: 26px;">
<label for="age" style="margin-top: -7px;">Age</label>
<input type="number" class="form-control" name="age" id="age" aria-describedby="helpId"
placeholder="Age" min="0" max="100" style="padding-top: 17px;">
<small id="helpId" class="form-text text-muted"></small>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="rank">Grade</label>
<select class="form-control" name="rank" id="rank" required>
<select class="form-control selectpicker" data-style="btn btn-link" name="rank"
id="rank" required>
@foreach ($RankList as $rank)
<option value="{{$rank->id}}">{{$rank->name}}</option>
@endforeach
</select>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="job">Poste</label>
<select class="form-control" name="job" id="job" required>
<select class="form-control selectpicker" data-style="btn btn-link" name="job" id="job"
required>
@foreach ($JobsList as $job)
<option value="{{$job->id}}">{{$job->name}}</option>
@endforeach
</select>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
</div>
</div>
</div>
<hr>
<div class="alert alert-warning" id="psw_alert" role="alert" style="display:none;">
Les mot de passe doivent être identique
</div>
@@ -112,15 +117,16 @@
<div class="col-6">
<div class="form-group">
<label for="psw">Mot de passe</label>
<input type="password" class="form-control" name="psw" id="psw" placeholder="Supermotdepasse" onkeyup="checkPassword()">
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="password" class="form-control" name="psw" id="psw"
placeholder="Supermotdepasse" data-parsley-password required>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="pswc">Confirmer le mot de passe</label>
<input type="password" class="form-control" name="pswc" id="pswc" placeholder="Supermotdepasse" onkeyup="checkPassword()">
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="password" class="form-control" name="pswc" id="pswc"
placeholder="Supermotdepasse" data-parsley-equalto="#psw"
data-parsley-error-message="Les mot de passe ne sont pas identique" required>
</div>
</div>
</div>
@@ -131,10 +137,8 @@
</div>
@endsection
@section('breadcrumb')
Utilisateur / Ajouter
@endsection
@section('custom_scripts')
<script src="/assets/admin/assets/js/user.js"></script>
<script>
$('#form').parsley();
</script>
@endsection

View File

@@ -14,34 +14,33 @@
<div class="col-6">
<div class="form-group">
<label for="firstname">Prénom</label>
<input type="text" class="form-control" name="firstname" id="firstname" aria-describedby="helpId" placeholder="John" required value={{$user->firstname}}>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="text" class="form-control" name="firstname" id="firstname"
aria-describedby="helpId" placeholder="John" required value="{{$user->firstname}}">
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="lastname">Nom de famille</label>
<input type="text" class="form-control" name="lastname" id="lastname" aria-describedby="helpId" placeholder="Doe" required value={{$user->lastname}}>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="text" class="form-control" name="lastname" id="lastname"
aria-describedby="helpId" placeholder="Doe" required value="{{$user->lastname}}">
</div>
</div>
</div>
<div class="alert alert-warning" id="email_alert" role="alert" style="display:none;">
Les adresses email doivent être identique
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" name="email" id="email" aria-describedby="emailHelp" placeholder="exemple@c-cms.cf" onkeyup="checkEmail()" required value={{$user->email}}>
<small id="emailHelp" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="email" class="form-control" name="email" id="email"
aria-describedby="emailHelp" placeholder="exemple@exvps.ca" value="{{$user->email}}" required>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="email">Confirmer l'addresse email</label>
<input type="email" class="form-control" name="emailc" id="emailc" aria-describedby="emailHelp" placeholder="exemple@c-cms.cf" onkeyup="checkEmail()" required value={{$user->email}}>
<small id="emailHelp" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="email" class="form-control" name="emailc" id="emailc"
aria-describedby="emailHelp" placeholder="exemple@exvps.ca"
data-parsley-equalto="#email" required
data-parsley-error-message="Les emails ne sont pas identique" value="{{$user->email}}">
</div>
</div>
</div>
@@ -49,7 +48,8 @@
<div class="col-6">
<div class="form-group">
<label for="adresse">Adresse</label>
<input type="text" class="form-control" name="adresse" id="adresse" aria-describedby="helpId" placeholder="14 ave Des Rue, Rimouski" value={{$user->adress}}>
<input type="text" class="form-control" name="adresse" id="adresse"
aria-describedby="helpId" placeholder="14 ave Des Rue, Rimouski" value="{{$user->adress}}">
<small id="helpId" class="form-text text-muted"></small>
</div>
</div>
@@ -57,82 +57,69 @@
<div class="form-group">
<label for="telephone">Telephone</label>
<input type="tel"
class="form-control" name="telephone" id="telephone" aria-describedby="helpId" placeholder="(XXX) XXX-XXXX" value={{$user->telephone}}>
<small id="helpId" class="form-text text-muted"><span class="badge badge-info">Si vous souhaiter recevoir des notifications par SMS</span></small>
class="form-control" name="telephone" id="telephone" aria-describedby="helpId"
placeholder="213-546-5401" pattern="([0-9]{3}-[0-9]{3}-[0-9]{4})*"
data-parsley-error-message="Le numéro de téléphone est invalide" value="{{$user->telephone}}">
</div>
</div>
</div>
<div class="row">
<div class="row mb-4">
<div class="col-3">
<div class="form-group">
<label for="sexe">Sexe</label>
<select class="form-control" name="sexe" id="sexe" required>
@switch($user->sexe)
@case("m")
<option value="m">Homme</option>
@break
@case("f")
<option value="f">Femme</option>
@break
@default
<option value="a">Autre</option>
@endswitch
<option value="m">Homme</option>
<option value="f">Femme</option>
<option value="a">Autre</option>
<select class="form-control selectpicker" data-style="btn btn-link" name="sexe"
id="sexe" required>
<option value="m" @if($user->sexe == 'm') selected @endif >Homme</option>
<option value="f" @if($user->sexe == 'm') selected @endif >Femme</option>
<option value="a" @if($user->sexe == 'm') selected @endif >Autre</option>
</select>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="age">Age</label>
<input type="number" class="form-control" name="age" id="age" aria-describedby="helpId" placeholder="Age" min="0" max="100" value={{$user->age}}>
<div class="form-group" style="margin-top: 26px;">
<label for="age" style="margin-top: -7px;">Age</label>
<input type="number" class="form-control" name="age" id="age" aria-describedby="helpId"
placeholder="Age" min="0" max="100" style="padding-top: 17px;">
<small id="helpId" class="form-text text-muted"></small>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="rank">Grade</label>
<select class="form-control" name="rank" id="rank" required>
<option value={{$user->rank->id}}>{{$user->rank->name}}</option>
<select class="form-control selectpicker" data-style="btn btn-link" name="rank"
id="rank" required>
@foreach ($RankList as $rank)
<option value="{{$rank->id}}">{{$rank->name}}</option>
<option value="{{$rank->id}}" @if($user->rank_id == $rank->id) selected @endif >{{$rank->name}}</option>
@endforeach
</select>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="job">Poste</label>
<select class="form-control" name="job" id="job" required>
<option value={{$user->job->id}}>{{$user->job->name}}</option>
<select class="form-control selectpicker" data-style="btn btn-link" name="job" id="job"
required>
@foreach ($JobsList as $job)
<option value="{{$job->id}}">{{$job->name}}</option>
<option value="{{$job->id}}" @if($user->job_id == $job->id) selected @endif>{{$job->name}}</option>
@endforeach
</select>
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
</div>
</div>
</div>
<hr>
<div class="alert alert-warning" id="psw_alert" role="alert" style="display:none;">
Les mot de passe doivent être identique
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="psw">Mot de passe</label>
<input type="password" class="form-control" name="psw" id="psw" placeholder="Supermotdepasse" onkeyup="checkPassword()">
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="password" class="form-control" name="psw" id="psw"
placeholder="Supermotdepasse" data-parsley-password>
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="pswc">Confirmer le mot de passe</label>
<input type="password" class="form-control" name="pswc" id="pswc" placeholder="Supermotdepasse" onkeyup="checkPassword()">
<small id="helpId" class="form-text text-muted"><span class="badge badge-warning">Requis</span></small>
<input type="password" class="form-control" name="pswc" id="pswc"
placeholder="Supermotdepasse" data-parsley-equalto="#psw"
data-parsley-error-message="Les mot de passe ne sont pas identique">
</div>
</div>
</div>
@@ -143,10 +130,8 @@
</div>
@endsection
@section('breadcrumb')
Utilisateur / Modifier
@endsection
@section('custom_scripts')
<script src="/assets/admin/assets/js/user.js"></script>
<script>
$('#form').parsley();
</script>
@endsection

View File

@@ -0,0 +1,103 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-8 col-12 mr-auto ml-auto">
<!-- Wizard container -->
<div class="wizard-container">
<div class="card card-wizard active" data-color="primary">
<form id="form" action="/admin/setup" method="post" data-parsley-validate novalidate>
<div class="card-header text-center">
<h3 class="card-title">
Bienvenue {{ Auth::user()->fullname() }},
</h3>
<h5 class="card-description">Avant de pouvoir continer vous devez répondre a quelques
questions</h5>
</div>
<div class="card-body">
<h5>Renseignement personnel</h5>
@csrf
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="">Nom <sup class="text-danger">*</sup></label>
<input type="text" class="form-control" name="lastname"
value="{{Auth::user()->lastname}}" id="" aria-describedby="helpId" required
placeholder="Doe">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Prenom <sup class="text-danger">*</sup></label>
<input type="text" class="form-control" name="firstname" id=""
value="{{Auth::user()->firstname}}" aria-describedby="helpId"
placeholder="John" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Adresse</label>
<input type="text" class="form-control" name="address" id=""
value="{{Auth::user()->adress}}" aria-describedby="helpId"
placeholder="16 ave DesRoche, Montréal, QC G0L 1B0">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Téléphone</label>
<input type="tel" class="form-control" name="telephone" id=""
value="{{Auth::user()->telephone}}" aria-describedby="helpId"
placeholder="213-546-5401" pattern="([0-9]{3}-[0-9]{3}-[0-9]{4})*"
data-parsley-error-message="Le numéro de téléphone est invalide">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Sexe</label>
<select class="form-control selectpicker" data-style="btn btn-link" name="sexe" id="">
<option @if(Auth::user()->sexe == 'm') selected @endif value="m">Homme</option>
<option @if(Auth::user()->sexe == 'f') selected @endif value="f">Femme</option>
<option @if(Auth::user()->sexe == 'a') selected @endif value="a">Autre</option>
</select>
</div>
</div>
</div>
<h5 class="mt-5">Sécurité</h5>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="psw">Nouveau mot de passe <sup class="text-danger">*</sup></label>
<input type="password" class="form-control" name="psw" id="psw"
aria-describedby="helpId" placeholder="" data-parsley-password required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="psw">Confimer le nouveau mot de passe <sup class="text-danger">*</sup></label>
<input type="password" class="form-control" name="psw" id="psw"
aria-describedby="helpId" placeholder="" data-parsley-equalto="#psw" required
data-parsley-error-message="Les mot de passe ne sont pas identique">
</div>
</div>
<div class="col-12">
<sup class="text-danger">*</sup> <small>Champ requis</small>
</div>
</div>
</div>
<div class="card-footer">
<input type="submit" class="btn btn-primary btn-block" value="Continuer">
</div>
</form>
</div>
</div>
</div>
@endsection
@section('breadcrumb')
Dashboard
@endsection
@section('scripts')
<script>
$('#form').parsley();
</script>
@endsection

View File

@@ -29,6 +29,9 @@
<script src="/js/plugins/Chart.min.js"></script>
<!-- Notifications Plugin -->
<script src="/js/plugins/bootstrap-notify.js"></script>
<!-- Parsley Plugin -->
<script src="/js/plugins/parsley.min.js"></script>
<script src="/js/plugins/parsley-extra.min.js"></script>
<script src="/js/plugins/trumbowyg/trumbowyg.min.js"></script>
<script src="/js/plugins/trumbowyg/langs/fr.js"></script>

View File

@@ -13,6 +13,12 @@ Breadcrumbs::for('admin.dashboard', function ($trail) {
$trail->push('Dashboard', route('admin.dashboard'));
});
// Admin > Setup
Breadcrumbs::for('admin.setup', function ($trail) {
$trail->parent('admin.dashboard');
$trail->push('Configuration initiale', route('admin.setup'));
});
// Admin > Update
Breadcrumbs::for('admin.update', function ($trail) {
$trail->parent('admin.dashboard');
@@ -64,7 +70,7 @@ Breadcrumbs::for('admin.user', function ($trail, $id) {
// Admin > User > Add
Breadcrumbs::for('admin.user.add', function ($trail) {
$trail->parent('admin.user');
$trail->parent('admin.users');
$trail->push('Ajouter un utilisateur', route('admin.user.add'));
});

View File

@@ -1,7 +1,9 @@
<?php
use \App\Notifications\sms;
use Carbon\Carbon;
use Illuminate\Support\Facades\Storage;
/*
|--------------------------------------------------------------------------
| Web Routes
@@ -19,7 +21,6 @@ Route::get('logout', 'Auth\LoginController@logout')->name('logout');
Route::get('/ocom/create', 'OCOMController@updateOCOMDB');
/** Public Route */
Route::get('/', 'PublicController@index');
Route::get('/news', 'NewsController@index');
@@ -30,8 +31,12 @@ Route::get('/picture/{id}', 'PictureController@show');
Route::get('/pictures', 'PictureController@index');
Route::get('/file/get', 'GoogleDriveController@getFile')->middleware('fileperm:file,r');
@
Route::middleware(['auth'])->name('admin.')->group(function () {
/** Setup */
Route::get('/admin/setup', 'AdminController@setup')->middleware('auth')->name('admin.setup');
Route::post('/admin/setup', 'AdminController@saveSetup')->middleware('auth');
Route::middleware(['auth', 'firstlogin'])->name('admin.')->group(function () {
/* Espace Administration Route */
@@ -40,6 +45,7 @@ Route::middleware(['auth'])->name('admin.')->group(function () {
Route::get('/admin/update', 'AdminController@update')->name('update');
Route::get('/admin/status', 'AdminController@status')->name('status');
/** Schedule */
Route::get('/admin/schedule', 'CalendarController@index')->middleware('perm:schedule_see')->name('schedule');
Route::get('/admin/schedule/pdf/event/{id}', 'ScheduleController@printtopdf')->middleware('perm:schedule_see')->name('schedule.pdf');
@@ -60,10 +66,10 @@ Route::middleware(['auth'])->name('admin.')->group(function () {
/** User */
Route::get('/admin/user', 'UserController@index')->middleware('perm:user_see')->name('users');
Route::get('/admin/user/{id}' , 'UserController@show')->middleware('perm:user_see')->name('user');
Route::get('/admin/user/{id}/course','UserController@showCourses')->name('user.courses');
Route::get('/admin/user/add', 'UserController@create')->middleware('perm:user_add')->name('user.add');
Route::post('/admin/user/add', 'UserController@store')->middleware('perm:user_add');
Route::get('/admin/user/{id}', 'UserController@show')->middleware('perm:user_see')->name('user');
Route::get('/admin/user/{id}/course', 'UserController@showCourses')->name('user.courses');
Route::get('/admin/user/edit/{id}', 'UserController@edit')->middleware('perm:user_edit')->name('user.edit');
Route::post('/admin/user/edit/{id}', 'UserController@update')->middleware('perm:user_edit');
@@ -200,7 +206,6 @@ Route::middleware(['auth'])->name('admin.')->group(function () {
Route::patch('/admin/drive/{folder}/addpermission/{subject}', 'GoogleDriveController@addPermission')->middleware('perm:file_see', 'fileperm:folder,p');
/** OCOM */
Route::get('/admin/ocom', 'OCOMController@index')->name('ocom')->middleware('perm:instruction_db_ocom_see');
Route::get('/admin/ocom/generate', 'OCOMController@showgenerate')->name('ocom.generate')->middleware('perm:instruction_db_ocom_edit');