Compare commits

..

No commits in common. "master" and "addGoogleAnalytics" have entirely different histories.

26 changed files with 1412 additions and 1330 deletions

View file

@ -1,78 +0,0 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
/*
* Command Name: LDC Web Status Checker
* Description: Envoi des infos Serveur/Laravel vers LDC Web
* Version: 1.1
* Author: Vincent BRIDIER
* Author URI: vincent.bridier@ldc.fr
*/
class LdcWebStatusChecker extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'ldcweb:statuschecker';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Envoi des infos Serveur/Laravel vers LDC Web';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$data = [];
$data['uuid'] = config('ldcweb.project_uuid');
// Sitemap.xml ?
if (file_exists(public_path() . '/sitemap.xml')) {
$data['sitemap'] = 'true';
} else {
$data['sitemap'] = 'false';
}
// Robots.txt ?
if (file_exists(public_path() . '/robots.txt')) {
$data['robots'] = 'true';
} else {
$data['robots'] = 'false';
}
//Check logs
$data['logs'] = 0;
$patherror = storage_path('/logs');
$files = glob($patherror . '/*.log');
if (count($files) > 0) {
foreach ($files as $file) {
$data['logs'] = $data['logs'] + filesize($file);
}
}
$data['code']['version'] = app()->version();
// Send by cURL
$url = 'https://ldc-web.ldc.fr/api/status-checker';
$ch = curl_init($url);
$payload = ['token' => 'CE8S52Qq7stf5k8frF4T', 'datas' => json_encode($data)];
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
return 0;
}
}

View file

@ -244,11 +244,11 @@ class EmployeesController extends Controller
// Is employee locked down ?
if ($employee->password_attempts >= 3) {
SendEmployeeLockedDownMailToEmployee::dispatch(
SendEmployeeLockedDownMailToEmployee::dispatchAfterResponse(
new EmployeeLockedDown($employee),
$employee
);
SendEmployeeLockedDownMailToSiteRH::dispatch(
SendEmployeeLockedDownMailToSiteRH::dispatchAfterResponse(
new EmployeeYourAccountIsLockedDown($employee),
$employee
);
@ -278,16 +278,15 @@ class EmployeesController extends Controller
public function passwordForgottenSubmit(EmployeeForgottenPasswordRequest $request)
{
/** @var \App\Models\Employee */
$employee = Employee::where('matricule', $request->matricule)->firstOrFail();
/** @var \App\Models\EmployeeMailToken */
$token = EmployeeMailToken::whereHas('employee', function ($q) use ($employee) {
$q->where('id', $employee->id);
})->firstOrNew();
$token->email = $employee->email;
$token->employee()->associate($employee);
$token = $employee->token ?? new EmployeeMailToken();
$token->fill([
'email' => $employee->email,
'employee_id' => $employee->id
]);
$token->saveOrFail();
SendMailResetPasswordToEmployee::dispatchAfterResponse($employee, $token);
$token->employee()->associate($token);
SendMailResetPasswordToEmployee::dispatchAfterResponse($employee);
return \redirect()->back()->with('successMail', true);
}

View file

@ -155,7 +155,7 @@ class SondagesController extends Controller
/** @var \app\Models\Employee */
$employee = auth('employee')->user();
if ($employee->hasAnweredToSondage($sondage)) {
return view('front.sondages.saved', ['answered' => true, 'sondage' => $sondage]);
return view('front.sondages.saved', ['answered' => true]);
}
return view('front.sondages.show', compact('sondage'));
}

View file

@ -3,7 +3,6 @@
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Support\Facades\Session;
class Authenticate extends Middleware
{
@ -20,7 +19,6 @@ class Authenticate extends Middleware
'employee' => route('employees.login')
];
if (! $request->expectsJson()) {
Session::flash('message', trans('Vous devez vous identifier pour àccéder à cette page'));
foreach ($request->route()->gatherMiddleware() as $middleware) {
if (\is_string($middleware) and strpos($middleware, 'auth:') !== false) {
$route = $logins[str_replace('auth:', '', $middleware)] ?? null;

View file

@ -6,8 +6,6 @@ use App\Models\Site;
use Closure;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Enums\Role;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Session;
class UserSite
{
@ -23,35 +21,29 @@ class UserSite
/** @var \App\Models\User */
$user = auth()->user();
try {
if (!Site::whereId($user->selected_site_id)->exists()) {
$user->selected_site_id = null;
$user->save();
}
if ($request->query('userSite')) {
/** @var \App\Models\Site|null */
$site = $user->role->equals(Role::admin()) ?
Site::whereId($request->query('userSite'))->first() :
$user->sites()->where('site_id', $request->query('userSite'))->first();
if ($site) {
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
}
// Select user site
if (!$user->selected_site_id) {
/** @var \App\Models\Site */
$site = $user->role->equals(Role::admin()) ?
Site::firstOrFail() : $user->sites()->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
if ($request->query('userSite')) {
$site = $user->role->equals(Role::admin()) ?
Site::whereId($request->query('userSite'))->firstOrFail() :
$user->sites()->where('site_id', $request->query('userSite'))->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
} elseif (!Site::where('id', $user->selected_site_id)->exists()) {
$site = $user->role->equals(Role::admin()) ?
Site::whereId($request->query('userSite'))->firstOrFail() :
$user->sites()->where('site_id', $request->query('userSite'))
->firstOrFail();
$user->selected_site_id = $site->id;
$user->saveOrFail();
}
} catch (ModelNotFoundException $e) {
Log::warning("$user->name n'as pas de site administrable.");
auth()->logout();
Session::flash('error', "$user->name n'as pas de site administrable.");
return \response()->redirectToRoute('bo.login');
abort(400, 'Vous n\'avez pas de site administrable');
}
return $next($request);
}

View file

@ -4,7 +4,6 @@ namespace App\Jobs;
use App\Mail\EmployeePasswordResetMail;
use App\Models\Employee;
use App\Models\EmployeeMailToken;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
@ -20,22 +19,16 @@ class SendMailResetPasswordToEmployee implements ShouldQueue
use Queueable;
use SerializesModels;
/** @var \App\Models\Employee */
protected $employee;
/** @var \App\Models\EmployeeMailToken */
protected $token;
/**
* Create a new job instance.
*
* @param \App\Models\Employee $employee
* @param \App\Models\EmployeeMailToken $token
* @return void
*/
public function __construct(Employee $employee, EmployeeMailToken $token)
public function __construct(Employee $employee)
{
$this->employee = $employee;
$this->token = $token;
}
/**
@ -45,7 +38,7 @@ class SendMailResetPasswordToEmployee implements ShouldQueue
*/
public function handle()
{
Mail::to(['email' => $this->token->email])->send(new EmployeePasswordResetMail($this->employee));
Mail::to(['email' => $this->employee->token->email])->send(new EmployeePasswordResetMail($this->employee));
Log::debug(sprintf('Sent %s to %s', EmployeePasswordResetMail::class, config('mail.contactsList.contact')));
}
}

View file

@ -34,8 +34,8 @@ class EmployeeLockedDown extends Mailable
{
return $this
->subject(sprintf('%s : Un compte salarié vient d\'être verrouillé', config('app.name')))
->view('emails.employee-own-lockedDown')
->text('emails.employee-own-lockedDown-plain')
->view('emails.employee-lockedDown')
->text('emails.employee-lockedDown-plain')
->with('employee', $this->employee);
}
}

View file

@ -34,8 +34,8 @@ class EmployeeYourAccountIsLockedDown extends Mailable
{
return $this
->subject(sprintf('%s : Votre compte salarié vient d\'être verrouillé', config('app.name')))
->view('emails.employee-lockedDown')
->text('emails.employee-lockedDown-plain')
->view('emails.employee-own-lockedDown')
->text('emails.employee-own-lockedDown-plain')
->with('employee', $this->employee);
}
}

View file

@ -179,16 +179,6 @@ class Site extends Model
parent::__construct($attributes);
}
protected static function booted()
{
static::deleted(function (self $model) {
User::whereSelectedSiteId($model->id)->get()
->map(function (User $user) {
$user->selected_site_id = null;
});
});
}
/**
* Has one Societe
*
@ -216,7 +206,7 @@ class Site extends Model
*/
public function users()
{
return $this->belongsToMany(User::class, 'user_site');
return $this->belongsToMany(Site::class);
}
/**

View file

@ -28,7 +28,9 @@ class AppServiceProvider extends ServiceProvider
public function boot()
{
// LOCAL HTTPS FIX
URL::forceScheme('https');
if (config('app.env') !== 'local') {
URL::forceScheme('https');
}
// HA PROXY FIX
App::singleton('clientIp', function () {
if (config('app.env') === 'local') {

View file

@ -12,9 +12,9 @@
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"htmlmin/htmlmin": "^8.0",
"kwaadpepper/crud-policies": "^0.4.5",
"kwaadpepper/enum": "^2.1",
"kwaadpepper/exception-handler": "^0.0.9",
"kwaadpepper/crud-policies": "^0.2.0",
"kwaadpepper/enum": "^2.0",
"kwaadpepper/exception-handler": "^0.0.1",
"kwaadpepper/image-resizer": "^0.0.3",
"laravel/framework": "^8.12",
"laravel/tinker": "^2.5",
@ -66,11 +66,7 @@
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true,
"composer/package-versions-deprecated": true
}
"sort-packages": true
},
"minimum-stability": "dev",
"prefer-stable": true

2455
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -19,7 +19,9 @@ return [
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins' => ['
http://portsalaries.test
'],
'allowed_origins_patterns' => [],

View file

@ -12,6 +12,6 @@ return [
* so you can receive email if things go mad
*/
'contactsList' => [
env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')
'serviceweb' => env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')
]
];

View file

@ -1,5 +0,0 @@
<?php
return [
'project_uuid' => env('PROJECT_UUID')
];

View file

@ -1,32 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ChangeDeleteRestictionPivotUserSite extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('user_site', function (Blueprint $table) {
$table->dropForeign(['site_id']);
$table->foreign('site_id')->references('id')->on('sites')
->cascadeOnDelete();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}

View file

@ -1,13 +0,0 @@
<?php
return [
'classes' => [
'societes' => 'Societies',
'employees' => 'Employees',
'plannings' => 'Plannings',
'poles' => 'Poles',
'sites' => 'Sites',
'sondages' => 'Sondages',
'users' => 'Users',
]
];

View file

@ -1,13 +0,0 @@
<?php
return [
'classes' => [
'societes' => 'Sociétés',
'employees' => 'Salariés',
'plannings' => 'Plannings',
'poles' => 'Poles',
'sites' => 'Sites',
'sondages' => 'Sondages',
'users' => 'Utilisateurs',
]
];

View file

@ -9,16 +9,4 @@
#siteid {
color: white;
margin-right: 100px;
}
.alertMessage {
text-align: center;
max-width: 80%;
min-width: 15rem;
margin: 1rem auto;
padding: 0.5rem 1rem;
background-color: #e5e2e2;
font-weight: bold;
border-radius: 0.4rem;
font-family: Tahoma;
}
}

View file

@ -1,4 +1,4 @@
@import "./_import";
@import "_import";
@import "layouts/backend/top_nav";

View file

@ -1,3 +1,2 @@
@import "~swiper/swiper.min";
@import "front/style.sass";
@import "./_import";

View file

@ -1,3 +1,2 @@
@import "~swiper/swiper.min";
@import "front/styleLogin.sass";
@import "./_import";

View file

@ -29,4 +29,4 @@
<!-- STYLES -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" integrity="sha256-hHKA3d/HttC8OW3Sl093W8DoZudhHJDj++kZYo6MLzA=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.16/dist/sweetalert2.min.css" integrity="sha256-qpXwccFYncH5gTqXFe9EXZ8QeDw1Re68bbNVfFZzIzg=" crossorigin="anonymous">
<link rel="stylesheet" href="{{ mix('css/preload-back.css') }}">
<link rel="stylesheet" href="{{ asset('css/preload-back.css') }}">

View file

@ -7,7 +7,7 @@
</head>
<body>
@include("layouts.frontend.header")
@include('layouts.frontend.message')
<!--@include('layouts.frontend.message')-->
@yield('content')
@include("layouts.frontend.footer")
@stack('scriptsConstants')

View file

@ -24,8 +24,8 @@
@preload('mix-manifest.json')
<!-- STYLES -->
<link rel="stylesheet" href="{{ mix('css/preload-front_login.css') }}">
<link rel="stylesheet" href="{{ mix('css/preload-front.css') }}">
<link rel="stylesheet" href="{{ asset('css/preload-front_login.css') }}">
<link rel="stylesheet" href="{{ asset('css/preload-front.css') }}">
<style>
:root {
@if(isset($societe->colors['primary']))
@ -53,4 +53,4 @@
}
gtag('js', new Date());
gtag('config', 'G-PTNNFW0ZE1');
</script>
</script>

View file

@ -1,5 +1,5 @@
@if(session('message'))
<div class="alertMessage">
<div>
{{ session('message') }}
</div>
@endif