Mise en prod
This commit is contained in:
@@ -11,7 +11,7 @@ trim_trailing_whitespace = true
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.{yml,yaml}]
|
||||
[*.{js,yml,yaml}]
|
||||
indent_size = 2
|
||||
|
||||
[docker-compose.yml]
|
||||
|
||||
@@ -3,16 +3,14 @@ APP_ENV=local
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_TIMEZONE=UTC
|
||||
APP_URL=http://localhost
|
||||
APP_URL=http://localhost:8000
|
||||
|
||||
APP_LOCALE=en
|
||||
APP_FALLBACK_LOCALE=en
|
||||
APP_FAKER_LOCALE=en_US
|
||||
|
||||
APP_MAINTENANCE_DRIVER=file
|
||||
# APP_MAINTENANCE_STORE=database
|
||||
|
||||
PHP_CLI_SERVER_WORKERS=4
|
||||
APP_MAINTENANCE_STORE=database
|
||||
|
||||
BCRYPT_ROUNDS=12
|
||||
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,15 +1,12 @@
|
||||
/.phpunit.cache
|
||||
/node_modules
|
||||
/public/build
|
||||
/public/hot
|
||||
/public/storage
|
||||
/storage/*.key
|
||||
/storage/pail
|
||||
/vendor
|
||||
.env
|
||||
.env.backup
|
||||
.env.production
|
||||
.phpactor.json
|
||||
.phpunit.result.cache
|
||||
Homestead.json
|
||||
Homestead.yaml
|
||||
@@ -19,4 +16,3 @@ yarn-error.log
|
||||
/.fleet
|
||||
/.idea
|
||||
/.vscode
|
||||
/.zed
|
||||
|
||||
@@ -2,22 +2,19 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Laravel\Fortify\TwoFactorAuthenticatable;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
// use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
use HasFactory;
|
||||
use Notifiable;
|
||||
use TwoFactorAuthenticatable;
|
||||
use HasFactory, Notifiable;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name',
|
||||
@@ -26,32 +23,21 @@ class User extends Authenticatable
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for arrays.
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
'password',
|
||||
'remember_token',
|
||||
'two_factor_recovery_codes',
|
||||
'two_factor_secret',
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
'email_verified_at' => 'datetime',
|
||||
];
|
||||
|
||||
/**
|
||||
* The accessors to append to the model's array form.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
// protected $appends = [
|
||||
// 'profile_photo_url',
|
||||
// ];
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Pagination\Paginator;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
@@ -19,6 +20,6 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
//
|
||||
Paginator::useBootstrapFive();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Artesaos\SEOTools\Facades\SEOTools;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Laravel\Fortify\Fortify;
|
||||
|
||||
@@ -25,18 +26,24 @@ class FortifyBootstrapServiceProvider extends ServiceProvider
|
||||
public function boot()
|
||||
{
|
||||
Fortify::loginView(function () {
|
||||
SEOTools::setTitle('Connexion');
|
||||
return view('auth.login');
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
Fortify::registerView(function () {
|
||||
SEOTools::setTitle('Inscription');
|
||||
return view('auth.register');
|
||||
});
|
||||
|
||||
Fortify::requestPasswordResetLinkView(function () {
|
||||
SEOTools::setTitle('Mot de passe perdu');
|
||||
return view('auth.forgot-password');
|
||||
});
|
||||
|
||||
Fortify::resetPasswordView(function ($request) {
|
||||
SEOTools::setTitle('Changer mot de passe');
|
||||
return view('auth.reset-password', ['request' => $request]);
|
||||
});
|
||||
|
||||
@@ -51,5 +58,7 @@ class FortifyBootstrapServiceProvider extends ServiceProvider
|
||||
Fortify::twoFactorChallengeView(function () {
|
||||
return view('auth.two-factor-challenge');
|
||||
});
|
||||
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class FortifyServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
//Fortify::createUsersUsing(CreateNewUser::class);
|
||||
Fortify::createUsersUsing(CreateNewUser::class);
|
||||
Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
|
||||
Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
|
||||
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
|
||||
@@ -42,33 +42,5 @@ class FortifyServiceProvider extends ServiceProvider
|
||||
RateLimiter::for('two-factor', function (Request $request) {
|
||||
return Limit::perMinute(5)->by($request->session()->get('login.id'));
|
||||
});
|
||||
|
||||
Fortify::loginView(function () {
|
||||
return view('auth.login');
|
||||
});
|
||||
|
||||
//Fortify::registerView(function () {
|
||||
// return view('auth.register');
|
||||
//});
|
||||
|
||||
Fortify::requestPasswordResetLinkView(function () {
|
||||
return view('auth.forgot-password');
|
||||
});
|
||||
|
||||
Fortify::resetPasswordView(function ($request) {
|
||||
return view('auth.reset-password', ['request' => $request]);
|
||||
});
|
||||
|
||||
// Fortify::verifyEmailView(function () {
|
||||
// return view('auth.verify-email');
|
||||
// });
|
||||
|
||||
Fortify::confirmPasswordView(function () {
|
||||
return view('auth.confirm-password');
|
||||
});
|
||||
|
||||
Fortify::twoFactorChallengeView(function () {
|
||||
return view('auth.two-factor-challenge');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
return [
|
||||
App\Providers\AppServiceProvider::class,
|
||||
App\Providers\FortifyServiceProvider::class,
|
||||
App\Providers\FortifyBootstrapServiceProvider::class,
|
||||
App\Providers\FortifyServiceProvider::class,
|
||||
App\Providers\NovaServiceProvider::class,
|
||||
];
|
||||
|
||||
@@ -6,18 +6,29 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.2",
|
||||
"artesaos/seotools": "^1.3",
|
||||
"foroco/php-browser-detection": "^2.8",
|
||||
"guzzlehttp/oauth-subscriber": "^0.6.0",
|
||||
"kamona/fortify-bootstrap": "^1.0",
|
||||
"laravel/framework": "^11.9",
|
||||
"laravel/tinker": "^2.9"
|
||||
"laravel/framework": "^11.27.2",
|
||||
"laravel/nova": "*",
|
||||
"laravel/tinker": "^2.10",
|
||||
"lexicon/nova-action-button-selectors": "^1.2",
|
||||
"livewire/livewire": "^3.5",
|
||||
"php-flasher/flasher-laravel": "^2.1",
|
||||
"silviolleite/laravelpwa": "^2.0",
|
||||
"symfony/browser-kit": "^7.1",
|
||||
"symfony/http-client": "^7.1",
|
||||
"webklex/laravel-imap": "^5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.23",
|
||||
"laravel/pail": "^1.1",
|
||||
"laravel/pint": "^1.13",
|
||||
"laravel/sail": "^1.26",
|
||||
"mockery/mockery": "^1.6",
|
||||
"nunomaduro/collision": "^8.1",
|
||||
"phpunit/phpunit": "^11.0.1"
|
||||
"fakerphp/faker": "^1.23.1",
|
||||
"laravel/pint": "^1.18.1",
|
||||
"laravel/sail": "^1.35",
|
||||
"mockery/mockery": "^1.6.12",
|
||||
"nunomaduro/collision": "^8.4",
|
||||
"phpunit/phpunit": "^10.5.36",
|
||||
"spatie/laravel-ignition": "^2.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@@ -31,6 +42,12 @@
|
||||
"Tests\\": "tests/"
|
||||
}
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "path",
|
||||
"url": "./vendor/nova"
|
||||
}
|
||||
],
|
||||
"scripts": {
|
||||
"post-autoload-dump": [
|
||||
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
|
||||
@@ -46,10 +63,6 @@
|
||||
"@php artisan key:generate --ansi",
|
||||
"@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
|
||||
"@php artisan migrate --graceful --ansi"
|
||||
],
|
||||
"dev": [
|
||||
"Composer\\Config::disableProcessTimeout",
|
||||
"npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
|
||||
2925
composer.lock
generated
2925
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,7 @@ return [
|
||||
| well as their drivers. You may even define multiple stores for the
|
||||
| same cache driver to group types of items stored in your caches.
|
||||
|
|
||||
| Supported drivers: "array", "database", "file", "memcached",
|
||||
| Supported drivers: "apc", "array", "database", "file", "memcached",
|
||||
| "redis", "dynamodb", "octane", "null"
|
||||
|
|
||||
*/
|
||||
@@ -40,10 +40,9 @@ return [
|
||||
|
||||
'database' => [
|
||||
'driver' => 'database',
|
||||
'connection' => env('DB_CACHE_CONNECTION'),
|
||||
'table' => env('DB_CACHE_TABLE', 'cache'),
|
||||
'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'),
|
||||
'lock_table' => env('DB_CACHE_LOCK_TABLE'),
|
||||
'connection' => env('DB_CACHE_CONNECTION', null),
|
||||
'lock_connection' => env('DB_CACHE_LOCK_CONNECTION', null),
|
||||
],
|
||||
|
||||
'file' => [
|
||||
|
||||
@@ -37,9 +37,6 @@ return [
|
||||
'database' => env('DB_DATABASE', database_path('database.sqlite')),
|
||||
'prefix' => '',
|
||||
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
|
||||
'busy_timeout' => null,
|
||||
'journal_mode' => null,
|
||||
'synchronous' => null,
|
||||
],
|
||||
|
||||
'mysql' => [
|
||||
|
||||
@@ -24,7 +24,7 @@ return [
|
||||
| may even configure multiple disks for the same driver. Examples for
|
||||
| most supported storage drivers are configured here for reference.
|
||||
|
|
||||
| Supported drivers: "local", "ftp", "sftp", "s3"
|
||||
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
||||
|
|
||||
*/
|
||||
|
||||
@@ -32,8 +32,7 @@ return [
|
||||
|
||||
'local' => [
|
||||
'driver' => 'local',
|
||||
'root' => storage_path('app/private'),
|
||||
'serve' => true,
|
||||
'root' => storage_path('app'),
|
||||
'throw' => false,
|
||||
],
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ return [
|
||||
| utilizes the Monolog PHP logging library, which includes a variety
|
||||
| of powerful log handlers and formatters that you're free to use.
|
||||
|
|
||||
| Available drivers: "single", "daily", "slack", "syslog",
|
||||
| Available Drivers: "single", "daily", "slack", "syslog",
|
||||
| "errorlog", "monolog", "custom", "stack"
|
||||
|
|
||||
*/
|
||||
|
||||
@@ -30,8 +30,7 @@ return [
|
||||
| your mailers below. You may also add additional mailers if needed.
|
||||
|
|
||||
| Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
|
||||
| "postmark", "resend", "log", "array",
|
||||
| "failover", "roundrobin"
|
||||
| "postmark", "log", "array", "failover", "roundrobin"
|
||||
|
|
||||
*/
|
||||
|
||||
@@ -46,7 +45,7 @@ return [
|
||||
'username' => env('MAIL_USERNAME'),
|
||||
'password' => env('MAIL_PASSWORD'),
|
||||
'timeout' => null,
|
||||
'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
|
||||
'local_domain' => env('MAIL_EHLO_DOMAIN'),
|
||||
],
|
||||
|
||||
'ses' => [
|
||||
@@ -61,10 +60,6 @@ return [
|
||||
// ],
|
||||
],
|
||||
|
||||
'resend' => [
|
||||
'transport' => 'resend',
|
||||
],
|
||||
|
||||
'sendmail' => [
|
||||
'transport' => 'sendmail',
|
||||
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
|
||||
@@ -87,14 +82,6 @@ return [
|
||||
],
|
||||
],
|
||||
|
||||
'roundrobin' => [
|
||||
'transport' => 'roundrobin',
|
||||
'mailers' => [
|
||||
'ses',
|
||||
'postmark',
|
||||
],
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
@@ -36,10 +36,10 @@ return [
|
||||
|
||||
'database' => [
|
||||
'driver' => 'database',
|
||||
'connection' => env('DB_QUEUE_CONNECTION'),
|
||||
'connection' => env('DB_QUEUE_CONNECTION', null),
|
||||
'table' => env('DB_QUEUE_TABLE', 'jobs'),
|
||||
'queue' => env('DB_QUEUE', 'default'),
|
||||
'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90),
|
||||
'retry_after' => env('DB_QUEUE_RETRY_AFTER', 90),
|
||||
'after_commit' => false,
|
||||
],
|
||||
|
||||
@@ -47,7 +47,7 @@ return [
|
||||
'driver' => 'beanstalkd',
|
||||
'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'),
|
||||
'queue' => env('BEANSTALKD_QUEUE', 'default'),
|
||||
'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
|
||||
'retry_after' => env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
|
||||
'block_for' => 0,
|
||||
'after_commit' => false,
|
||||
],
|
||||
@@ -67,7 +67,7 @@ return [
|
||||
'driver' => 'redis',
|
||||
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
|
||||
'queue' => env('REDIS_QUEUE', 'default'),
|
||||
'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90),
|
||||
'retry_after' => env('REDIS_QUEUE_RETRY_AFTER', 90),
|
||||
'block_for' => null,
|
||||
'after_commit' => false,
|
||||
],
|
||||
|
||||
@@ -24,10 +24,6 @@ return [
|
||||
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
|
||||
],
|
||||
|
||||
'resend' => [
|
||||
'key' => env('RESEND_KEY'),
|
||||
],
|
||||
|
||||
'slack' => [
|
||||
'notifications' => [
|
||||
'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
|
||||
|
||||
@@ -125,6 +125,7 @@ return [
|
||||
| the framework. Typically, you should not need to change this value
|
||||
| since doing so does not grant a meaningful security improvement.
|
||||
|
|
||||
|
|
||||
*/
|
||||
|
||||
'cookie' => env(
|
||||
|
||||
268
config/twitter.php
Normal file
268
config/twitter.php
Normal file
@@ -0,0 +1,268 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'word_nocopy' => [
|
||||
'+ #',
|
||||
'avec #',
|
||||
'le #',
|
||||
],
|
||||
|
||||
'word_special_comment' => [
|
||||
'commenter avec',
|
||||
'commentez avec',
|
||||
'commente avec',
|
||||
'commentez',
|
||||
'commenter',
|
||||
'commente',
|
||||
'écrit',
|
||||
'écrire',
|
||||
'dites',
|
||||
"réponds",
|
||||
'répondez',
|
||||
'réponder',
|
||||
'repondre avec',
|
||||
'précise',
|
||||
'donne',
|
||||
'dit',
|
||||
'dites-nous',
|
||||
'dis nous',
|
||||
'dis-nous',
|
||||
'dites nous',
|
||||
'dites-nous',
|
||||
'tweet #',
|
||||
'quelle',
|
||||
],
|
||||
|
||||
'word_comment' => [
|
||||
'+ #',
|
||||
'avec #',
|
||||
'le #',
|
||||
'mentionnez #',
|
||||
'mentionne',
|
||||
'mentionner',
|
||||
'commente',
|
||||
'comment',
|
||||
'commentaire',
|
||||
'commentant',
|
||||
'écrit',
|
||||
'écrire',
|
||||
'dites',
|
||||
'dis',
|
||||
'cite',
|
||||
'donne',
|
||||
'tweet avec',
|
||||
'tweetent avec',
|
||||
'tweetent : avec',
|
||||
'tweet : avec',
|
||||
'hashtag',
|
||||
'répond',
|
||||
'indique',
|
||||
'tweet avec',
|
||||
],
|
||||
|
||||
'word_tag' => [
|
||||
'invit',
|
||||
'mention',
|
||||
'tag',
|
||||
'#tag',
|
||||
'identif',
|
||||
'désign',
|
||||
'@ un',
|
||||
'@ une',
|
||||
'@ tes',
|
||||
'@ 1',
|
||||
'@ deux',
|
||||
'@ 2',
|
||||
'@ plusieurs',
|
||||
],
|
||||
|
||||
'one_people_list' => [
|
||||
"@ un",
|
||||
"@ 1",
|
||||
"tag un",
|
||||
"tag a",
|
||||
"tag 1",
|
||||
"tag ton",
|
||||
"tag ton",
|
||||
"tag ta",
|
||||
"tag la",
|
||||
"un ami",
|
||||
"un copain",
|
||||
"une personne",
|
||||
"la personne",
|
||||
"un pote",
|
||||
"1 pote",
|
||||
"1 ami",
|
||||
"1 copain",
|
||||
"1 personne",
|
||||
"un(e) ami(e)",
|
||||
"un.e ami.e",
|
||||
"quelqu'un",
|
||||
"un fan",
|
||||
"1 fan",
|
||||
"un(e) pote",
|
||||
"un(e) pote"
|
||||
],
|
||||
|
||||
'two_people_list' => [
|
||||
"tag deux",
|
||||
"tag 2",
|
||||
"@ deux",
|
||||
"@ 2",
|
||||
"2 amis",
|
||||
"2 ami(e)s",
|
||||
"2 ami",
|
||||
"2 personnes",
|
||||
"2 potes",
|
||||
"deux amis",
|
||||
"deux ami(e)s",
|
||||
"deux ami",
|
||||
"deux personnes",
|
||||
"deux potes"
|
||||
],
|
||||
|
||||
'three_or_more_people_list' => [
|
||||
"3 amis",
|
||||
"3 ami(e)s",
|
||||
"3 ami",
|
||||
"3 personnes",
|
||||
"3 potes",
|
||||
"trois amis",
|
||||
"trois ami(e)s",
|
||||
"trois ami",
|
||||
"trois personnes",
|
||||
"trois potes",
|
||||
"tes amis",
|
||||
"des amis",
|
||||
"tes potes",
|
||||
"des potes"
|
||||
],
|
||||
|
||||
'sentence_for_tag' => [
|
||||
"J'invite : ",
|
||||
"Merci ! je tag : ",
|
||||
"Je tag : ",
|
||||
"Hop Hop, j'invite : ",
|
||||
"Avec moi : ",
|
||||
"Help me : ",
|
||||
"Pour vous aussi les gars : ",
|
||||
"tentez votre chance ! ",
|
||||
"Je tente ma chance ! J'espère que je vais gagner ! ",
|
||||
"J'espère que vais gagner ! ",
|
||||
"Merci pour le concours ! Essayez aussi : ",
|
||||
"Que la chance soit avec moi ! et vous ",
|
||||
"Merci d'organiser ce concours ! Ça peut vous intéresser ",
|
||||
"On croise les doigts ! vous aussi ",
|
||||
"C'est pour vous ça ! : ",
|
||||
"Celui là on le gagne ",
|
||||
"J'espère que vais gagner ! On participe ! ",
|
||||
"Merci d'organiser ce concours ! ",
|
||||
"Bonne chance à tous ! ",
|
||||
"J'adore les concours et je sais que vous aussi ",
|
||||
"J'ai tellement envie de gagner, essayez vous aussi ",
|
||||
"Je participe et j'invite ",
|
||||
"Bonjour je participe avec plaisir. Merci pour ce concours et bonne journée ! ",
|
||||
"Merci beaucoup j'adore votre compte. Je vous souhaite une belle continuation. J'invite ",
|
||||
"Bonjour je participe avec plaisir à ce super concours et j'invite ",
|
||||
"Superbe ! Je tente ma chance bien volontiers et j'invite ",
|
||||
"Chouette bonjour je participe avec plaisir avec ",
|
||||
"Bonjour je tente ma chance avec ",
|
||||
"Bonjour, Je tente ma chance bien volontiers et j'invite ",
|
||||
"Merci beaucoup pour ce super concours, je tague ",
|
||||
"Bonjour génial ! Je tente ma chance et j'identifie ",
|
||||
"Merci ! J'invite ",
|
||||
"Hello !!! Merci beaucoup je tente ma chance merci et bonne journée ! Je tague ",
|
||||
"Bonjour je participe avec plaisir pour ce beau cadeau et j'invite ",
|
||||
"Bonjour et merci pour ce super concours :) j'invite ",
|
||||
"Bonjour, trop Sympa ce concours. Essayez-vous aussi ",
|
||||
"Je tag mes amis ",
|
||||
"On tente encore et encore ",
|
||||
"Je tente ma chance aux côtés de ",
|
||||
"Ça vous intéressent ? ",
|
||||
"Qu'est ce que vous en pensez ? Allez participez-vous aussi ",
|
||||
"Let's go, je suis sûr qu'on va gagner cette fois :) "
|
||||
],
|
||||
|
||||
'sentence_for_random_comment' => [
|
||||
"Merci ! ",
|
||||
"Je participe ",
|
||||
"Hop Hop ",
|
||||
"Que la force soit avec moi ",
|
||||
"Je tente ma chance ! J'espère que je vais gagner ! ",
|
||||
"J'espère que vais gagner ! ",
|
||||
"Merci pour le concours ! ",
|
||||
"Que la chance soit avec moi ! ",
|
||||
"Merci d'organiser ce concours ! ",
|
||||
"On croise les doigts ! ",
|
||||
"C'est pour moi ça ! ",
|
||||
"Celui là on le gagne ",
|
||||
"J'espère que vais gagner ! Je participe ! ",
|
||||
"Merci d'organiser ce concours ! ",
|
||||
"Bonne chance à tous ! ",
|
||||
"J'adore les concours et surtout celui-ci ",
|
||||
"J'ai tellement envie de gagner ",
|
||||
"Bonjour je participe avec plaisir. Merci pour ce concours et bonne journée ! ",
|
||||
"Merci beaucoup pour j'adore votre compte. Je vous souhaite une belle continuation ",
|
||||
"Bonjour je participe avec plaisir à ce super concours ",
|
||||
"Superbe ! Je tente ma chance bien volontiers ",
|
||||
"Chouette bonjour je participe avec plaisir ",
|
||||
"Bonjour je tente ma chance ",
|
||||
"Bonjour, Je tente ma chance bien volontiers ",
|
||||
"Merci beaucoup pour ce super concours ",
|
||||
"Bonjour génial ! Je tente ma chance ",
|
||||
"Hello !!! Merci beaucoup je tente ma chance ",
|
||||
"Bonjour je participe avec plaisir pour ce beau cadeau ",
|
||||
"Bonjour et merci pour ce super concours :) ",
|
||||
"Bonjour, trop Sympa ce concours. ",
|
||||
"On tente encore et encore ",
|
||||
"Je tente ma chance même si je risque de ne pas gagner ",
|
||||
"Ça vous intéresse ? ",
|
||||
"Let's go, je suis sûr qu'on va gagner cette fois :) "
|
||||
],
|
||||
|
||||
'hashtag_to_blacklist' => [
|
||||
"#giveaway",
|
||||
"#concours",
|
||||
"#rt",
|
||||
"#follow",
|
||||
"#jeuconcours",
|
||||
"#jeu",
|
||||
"#jeux",
|
||||
"#cadeau",
|
||||
"#cadeaux",
|
||||
"#concour",
|
||||
"#giveway",
|
||||
"#tweet",
|
||||
"#commente",
|
||||
"#followers",
|
||||
"#follower",
|
||||
"#twitter",
|
||||
"#tag",
|
||||
"#jeuxconcours",
|
||||
"#giveawayalert",
|
||||
"#retweet",
|
||||
"#mentionne",
|
||||
"#kdo",
|
||||
"#gratuit",
|
||||
"#cadeaunoel",
|
||||
"#annonce",
|
||||
"#noel",
|
||||
"#joyeuxnoel"
|
||||
],
|
||||
|
||||
'giveaway_to_blacklist' => [
|
||||
"nude",
|
||||
'nft',
|
||||
"anal",
|
||||
"sex",
|
||||
"sorare",
|
||||
"freebet",
|
||||
"mint",
|
||||
"freemint",
|
||||
'paysafecard',
|
||||
'prompt',
|
||||
'freebets',
|
||||
'rtbf'
|
||||
],
|
||||
|
||||
];
|
||||
@@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Laravel\Fortify\Fortify;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->text('two_factor_secret')
|
||||
->after('password')
|
||||
->nullable();
|
||||
|
||||
$table->text('two_factor_recovery_codes')
|
||||
->after('two_factor_secret')
|
||||
->nullable();
|
||||
|
||||
if (Fortify::confirmsTwoFactorAuthentication()) {
|
||||
$table->timestamp('two_factor_confirmed_at')
|
||||
->after('two_factor_recovery_codes')
|
||||
->nullable();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn(array_merge([
|
||||
'two_factor_secret',
|
||||
'two_factor_recovery_codes',
|
||||
], Fortify::confirmsTwoFactorAuthentication() ? [
|
||||
'two_factor_confirmed_at',
|
||||
] : []));
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Laravel\Fortify\Fortify;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->text('two_factor_secret')
|
||||
->after('password')
|
||||
->nullable();
|
||||
|
||||
$table->text('two_factor_recovery_codes')
|
||||
->after('two_factor_secret')
|
||||
->nullable();
|
||||
|
||||
if (Fortify::confirmsTwoFactorAuthentication()) {
|
||||
$table->timestamp('two_factor_confirmed_at')
|
||||
->after('two_factor_recovery_codes')
|
||||
->nullable();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn(array_merge([
|
||||
'two_factor_secret',
|
||||
'two_factor_recovery_codes',
|
||||
], Fortify::confirmsTwoFactorAuthentication() ? [
|
||||
'two_factor_confirmed_at',
|
||||
] : []));
|
||||
});
|
||||
}
|
||||
};
|
||||
5798
package-lock.json
generated
5798
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
17
package.json
17
package.json
@@ -2,23 +2,24 @@
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
"dev": "vite"
|
||||
"dev": "vite",
|
||||
"build": "vite build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@popperjs/core": "^2.11.2",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"axios": "^1.7.4",
|
||||
"axios": "^1.6.4",
|
||||
"bootstrap": "^5.1.3",
|
||||
"concurrently": "^9.0.1",
|
||||
"laravel-vite-plugin": "^1.0",
|
||||
"postcss": "^8.4.47",
|
||||
"resolve-url-loader": "^2.3.1",
|
||||
"resolve-url-loader": "^5.0.0",
|
||||
"sass": "^1.32.11",
|
||||
"sass-loader": "^11.0.1",
|
||||
"tailwindcss": "^3.4.13",
|
||||
"vite": "^5.0",
|
||||
"vue": "^3.2.31",
|
||||
"vue-loader": "^16.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"bootstrap": "5.3.3",
|
||||
"simplebar": "^6.2.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
export default {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
};
|
||||
@@ -1,2 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow:
|
||||
Disallow: /
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Example Component</div>
|
||||
|
||||
<div class="card-body">
|
||||
I'm an example component.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted } from "vue"
|
||||
|
||||
onMounted(() => {
|
||||
console.log('Component mounted.')
|
||||
})
|
||||
</script>
|
||||
@@ -1,60 +1,67 @@
|
||||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
<div class="max-w-464-px mx-auto w-100">
|
||||
<div>
|
||||
<a href="/" class="mb-40 max-w-290-px">
|
||||
<img src="{{ asset('assets/images/logo.png') }}" alt="">
|
||||
<!-- Header -->
|
||||
<div class="mb-3 text-center">
|
||||
<a class="fw-bold fs-1" href="/">
|
||||
<img src="{{url('/')}}/media/logo.png" class="img-fluid mx-auto">
|
||||
</a>
|
||||
<h4 class="mb-12">Se Connecter</h4>
|
||||
<p class="mb-32 text-secondary-light text-lg">Prêt à tout dechirer !</p>
|
||||
<p class="text-uppercase fw-bold fs-sm text-muted">Se connecter!</p>
|
||||
</div>
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
<!-- END Header -->
|
||||
<div class="row g-0 justify-content-center">
|
||||
<div class="col-sm-8 col-xl-6">
|
||||
<form class="js-validation-signin" method="POST" action="{{ route('login') }}" novalidate="novalidate">
|
||||
@csrf
|
||||
<div class="icon-field mb-16">
|
||||
<span class="icon top-50 translate-middle-y">
|
||||
<iconify-icon icon="mage:email"></iconify-icon>
|
||||
</span>
|
||||
<input id="email" type="email" class="form-control h-56-px bg-neutral-50 radius-12 @error('email') is-invalid @enderror"
|
||||
name="email" value="{{ old('email') }}" required autocomplete="email" placeholder="Email" autofocus>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror"
|
||||
name="email" value="{{ old('email') }}" required autocomplete="email" autofocus placeholder="Email">
|
||||
|
||||
@error('email')
|
||||
<span class="alert alert-danger bg-danger-100 text-danger-600 border-danger-100 px-24 py-11 text-lg radius-8 d-flex align-items-center justify-content-between" role="alert">
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
<div class="position-relative mb-20">
|
||||
<div class="icon-field">
|
||||
<span class="icon top-50 translate-middle-y">
|
||||
<iconify-icon icon="solar:lock-password-outline"></iconify-icon>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<input id="password" type="password"
|
||||
class="form-control h-56-px bg-neutral-50 radius-12 @error('password') is-invalid @enderror" name="password "
|
||||
required autocomplete="current-password">
|
||||
</div>
|
||||
<span class="toggle-password ri-eye-line cursor-pointer position-absolute end-0 top-50 translate-middle-y me-16 text-secondary-light" data-toggle="#your-password"></span>
|
||||
</div>
|
||||
class="form-control @error('password') is-invalid @enderror" name="password"
|
||||
required autocomplete="current-password" placeholder="Mot de passe">
|
||||
|
||||
@error('password')
|
||||
<span class="alert alert-danger bg-danger-100 text-danger-600 border-danger-100 px-24 py-11 text-lg radius-8 d-flex align-items-center justify-content-between" role="alert">
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
<div class="">
|
||||
<div class="d-flex justify-content-between gap-2">
|
||||
<div class="form-check style-check d-flex align-items-center">
|
||||
<input class="form-check-input border border-neutral-300" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="remember">Se seouvenir de moi </label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary text-sm btn-sm px-12 py-16 w-100 radius-12 mt-32"> Connexion</button>
|
||||
<div class="mb-5">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="remember" id="remember"
|
||||
{{ old('remember') ? 'checked' : '' }}>
|
||||
|
||||
<label class="form-check-label" for="remember">
|
||||
Se souvenir de moi
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn w-100 btn-lg btn-hero btn-primary mb-3">Connexion
|
||||
</button>
|
||||
<p class="text-center">
|
||||
<a href="/forgot-password" class="text-black">
|
||||
<i class="fa fa-key opacity-50 me-1"></i> Mot de passe oublié ?
|
||||
</a>
|
||||
</p>
|
||||
<div class="mb-4">
|
||||
<p class="mt-3 mb-0 d-lg-flex justify-content-lg-between text-center">
|
||||
<a class="btn btn-sm btn-alt-secondary d-block d-lg-inline-block m-2" href="/">
|
||||
<i class="fa fa-rotate-back opacity-50 me-1"></i> Revenir à MyX
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -1,4 +1,4 @@
|
||||
@extends('layouts.app')
|
||||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
|
||||
66
resources/views/history.blade.php
Normal file
66
resources/views/history.blade.php
Normal file
@@ -0,0 +1,66 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="bg-body-light">
|
||||
<div class="content content-full">
|
||||
<div class="d-flex flex-column flex-sm-row justify-content-sm-between align-items-sm-center">
|
||||
<h1 class="flex-grow-1 fs-3 fw-semibold my-2 my-sm-3">Historique des participations</h1>
|
||||
<nav class="flex-shrink-0 my-2 my-sm-0 ms-sm-3" aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
@foreach($contests as $contest)
|
||||
<div class="col-md-6 my-2">
|
||||
<a class="block block-rounded block-link-pop" href="{{$contest->url}}" target="_blank">
|
||||
@if(isset($contest->picture))
|
||||
<div class="block-content pb-8 bg-image" style="background-image: url('{{$contest->picture}}');">
|
||||
@if($contest->participated)
|
||||
<span class="badge bg-danger fw-bold p-2 text-uppercase">
|
||||
Participé
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
<div class="block-content text-center">
|
||||
<h4 class="mb-1">{{$contest->name}}</h4>
|
||||
<p class="fs-sm">
|
||||
Fin le <span class="text-primary"> {{ \Carbon\Carbon::parse($contest->fin)->format('d/m/y') }}</span>
|
||||
</p>
|
||||
<p>
|
||||
{!! $contest->description !!}
|
||||
</p>
|
||||
</div>
|
||||
<div class="block-content block-content-full bg-body-light">
|
||||
<div class="row g-0 fs-sm text-center">
|
||||
<div class="col-4">
|
||||
<span class="text-muted fw-semibold">
|
||||
<i class="fa fa-fw fa-heart opacity-50 me-1"></i> {{$contest->nblike}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="text-muted fw-semibold">
|
||||
<i class="fa fa-retweet fa-heart opacity-50 me-1"></i> {{$contest->nbreply}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="text-muted fw-semibold">
|
||||
<i class="fa fa-reply fa-comments opacity-50 me-1"></i> {{$contest->nbtweet}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@endforeach
|
||||
<div class="mb-3">
|
||||
{!! $contests->links() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
26
resources/views/index.blade.php
Normal file
26
resources/views/index.blade.php
Normal file
@@ -0,0 +1,26 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="bg-body-light">
|
||||
<div class="content content-full">
|
||||
<div class="d-flex flex-column flex-sm-row justify-content-sm-between align-items-sm-center">
|
||||
<h1 class="flex-grow-1 fs-3 fw-semibold my-2 my-sm-3">Liste des concours</h1>
|
||||
<nav class="flex-shrink-0 my-2 my-sm-0 ms-sm-3" aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
@foreach($contests as $contest)
|
||||
<livewire:contest :contest="$contest">
|
||||
@endforeach
|
||||
<div class="mb-3">
|
||||
{!! $contests->links() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -1,88 +1,138 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ config('app.name', 'Laravel') }}</title>
|
||||
<link rel="shortcut icon" href="{{url('/')}}/media/favicons/favicon.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="{{url('/')}}/media/favicons/apple-touch-icon-180x180.png">
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||
{!! SEO::generate(true) !!}
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
|
||||
|
||||
<!-- Styles -->
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<!-- Modules -->
|
||||
@yield('css')
|
||||
@vite(['resources/sass/main.scss', 'resources/js/dashmix/app.js'])
|
||||
<script src="{{ asset('js/setTheme.js') }}"></script>
|
||||
@yield('js')
|
||||
@livewireStyles
|
||||
@laravelPWA
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{ url('/') }}">
|
||||
{{ config('app.name', 'Laravel') }}
|
||||
<div id="page-container" class="sidebar-o sidebar-dark enable-page-overlay side-scroll page-header-fixed main-content-narrow">
|
||||
<nav id="sidebar" aria-label="Main Navigation">
|
||||
<div class="smini-hidden">
|
||||
<div class="content-header justify-content-lg-center bg-white">
|
||||
<a class="fw-semibold text-white tracking-wide" href="/">
|
||||
<img src="{{url('/')}}/media/logo.png" width="100px" class="img-fluid mx-auto d-none d-md-block" alt="Logo MyX">
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
|
||||
aria-label="{{ __('Toggle navigation') }}">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
<div class="d-lg-none">
|
||||
<button type="button" class="btn btn-sm btn-alt-secondary d-lg-none" data-toggle="layout" data-action="sidebar_close">
|
||||
<i class="fa fa-times-circle"></i>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<!-- Left Side Of Navbar -->
|
||||
<ul class="navbar-nav me-auto">
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<!-- Authentication Links -->
|
||||
@guest
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
|
||||
</li>
|
||||
@if (Route::has('register'))
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
|
||||
</li>
|
||||
@endif
|
||||
@else
|
||||
<li class="nav-item dropdown">
|
||||
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button"
|
||||
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{{ Auth::user()->name }}
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
|
||||
<a href="{{ route('profile.edit') }}" class="dropdown-item">
|
||||
{{ __('Profile') }}
|
||||
</a>
|
||||
<a class="dropdown-item" href="{{ route('logout') }}" onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
{{ __('Logout') }}
|
||||
</a>
|
||||
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="js-sidebar-scroll">
|
||||
<div class="smini-hidden">
|
||||
<div class="content-side content-side-full bg-black-10 d-flex align-items-center">
|
||||
<a class="img-link d-inline-block">
|
||||
<img class="img-avatar img-avatar48 img-avatar-thumb" src="{{url('/')}}/media/avatars/avatar8.jpg" alt="">
|
||||
</a>
|
||||
<div class="ms-3">
|
||||
<a class="fw-semibold text-dual">{{ucfirst(Auth::user()->name)}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-side">
|
||||
<ul class="nav-main">
|
||||
<li class="nav-main-item">
|
||||
<a class="nav-main-link" href="/">
|
||||
<i class="nav-main-link-icon fa fa-gauge"></i>
|
||||
<span class="nav-main-link-name">Dashboard</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-main-item">
|
||||
<a class="nav-main-link" href="#">
|
||||
<i class="nav-main-link-icon fa fa-users"></i>
|
||||
<span class="nav-main-link-name">Accounts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-main-item">
|
||||
<a class="nav-main-link" href="/history">
|
||||
<i class="nav-main-link-icon fa fa-chart-line"></i>
|
||||
<span class="nav-main-link-name">Historique</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-main-item">
|
||||
<a class="nav-main-link" href="/nova" target="_blank">
|
||||
<i class="nav-main-link-icon fa fa-toolbox"></i>
|
||||
<span class="nav-main-link-name">Nova</span>
|
||||
</a>
|
||||
</li>
|
||||
@endguest
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main class="py-4">
|
||||
<header id="page-header">
|
||||
<div class="content-header">
|
||||
<div class="row g-0 align-items-center w-100">
|
||||
<div class="col-5">
|
||||
<button type="button" class="btn btn-alt-secondary" data-toggle="layout" data-action="sidebar_toggle">
|
||||
<i class="fa fa-fw fa-bars"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-2 text-center">
|
||||
<a href="/">
|
||||
<img src="{{url('/')}}/media/logo.png" class="img-fluid mx-auto d-md-none d-sm-block" alt="Logo MyX">
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-5 text-end">
|
||||
<div class="dropdown d-inline-block">
|
||||
<button type="button" class="btn btn-sm btn-alt-primary ms-1 mx-2" id="page-header-user-dropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<i class="far fa-fw fa-user-circle"></i>
|
||||
<i class="fa fa-fw fa-angle-down ms-1 d-none d-sm-inline-block"></i>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-end p-0" aria-labelledby="page-header-user-dropdown">
|
||||
<div class="p-2">
|
||||
{{ucfirst(Auth::user()->name)}}
|
||||
<div role="separator" class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="/profile">
|
||||
<i class="far fa-fw fa-user me-1"></i> Mon compte
|
||||
</a>
|
||||
<a class="dropdown-item" href="/history">
|
||||
<i class="fa-solid fa-chart-line me-1"></i> Historique
|
||||
</a>
|
||||
<div role="separator" class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
|
||||
<i class="far fa-fw fa-arrow-alt-circle-left me-1"></i> Déconnexion
|
||||
</a>
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<main id="main-container">
|
||||
@yield('content')
|
||||
</main>
|
||||
<footer id="page-footer" class="bg-body-extra-light">
|
||||
<div class="content py-3">
|
||||
<div class="row fs-sm">
|
||||
<div class="col-sm-6 order-sm-1 py-1 text-center text-sm-start">
|
||||
Copyright © <span data-toggle="year-copy"></span> <b>MyX</b>. Tous droits réservés
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
@livewireScripts
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -1,101 +1,51 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" data-theme="light">
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" type="image/png" href="{{ asset('assets/images/favicon.png') }}" sizes="16x16">
|
||||
<!-- remix icon font css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/remixicon.css') }}">
|
||||
<!-- BootStrap css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/bootstrap.min.css') }}">
|
||||
<!-- Apex Chart css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/apexcharts.css') }}">
|
||||
<!-- Data Table css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/dataTables.min.css') }}">
|
||||
<!-- Text Editor css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/editor-katex.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/editor.atom-one-dark.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/editor.quill.snow.css') }}">
|
||||
<!-- Date picker css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/flatpickr.min.css') }}">
|
||||
<!-- Calendar css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/full-calendar.css') }}">
|
||||
<!-- Vector Map css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/jquery-jvectormap-2.0.5.css') }}">
|
||||
<!-- Popup css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/magnific-popup.css') }}">
|
||||
<!-- Slick Slider css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/slick.css') }}">
|
||||
<!-- prism css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/prism.css') }}">
|
||||
<!-- file upload css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/file-upload.css') }}">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/lib/audioplayer.css') }}">
|
||||
<!-- main css -->
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}">
|
||||
<link rel="shortcut icon" href="{{url('/')}}/media/favicons/favicon.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="{{url('/')}}/media/favicons/favicon-192x192.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="{{url('/')}}/media/favicons/apple-touch-icon-180x180.png">
|
||||
|
||||
{!! SEO::generate(true) !!}
|
||||
|
||||
<!-- Modules -->
|
||||
@yield('css')
|
||||
@vite(['resources/sass/main.scss', 'resources/js/dashmix/app.js'])
|
||||
<script src="{{ asset('js/setTheme.js') }}"></script>
|
||||
@yield('js')
|
||||
@laravelPWA
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="page-container">
|
||||
<!-- Main Container -->
|
||||
<main id="main-container">
|
||||
<!-- Page Content -->
|
||||
<div class="bg-image" style="background-image: url('{{url('/')}}/media/photos/twitter.jpg');">
|
||||
<div class="row g-0 bg-primary-op">
|
||||
<!-- Meta Info Section -->
|
||||
<div class="hero-static col-md-8 d-none d-md-flex align-items-md-center justify-content-md-center text-md-center">
|
||||
<div class="p-5 text-center w-100">
|
||||
|
||||
<section class="auth bg-base d-flex flex-wrap">
|
||||
<div class="auth-left d-lg-block d-none">
|
||||
<div class="d-flex align-items-center flex-column h-100 justify-content-center">
|
||||
<img src="{{ asset('assets/images/auth/auth-img.png') }}" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="auth-right py-32 px-24 d-flex flex-column justify-content-center">
|
||||
<!-- END Meta Info Section -->
|
||||
<!-- Main Section -->
|
||||
<div class="hero-static col-md-4 d-flex align-items-center bg-body-extra-light">
|
||||
<div class="p-3 w-100">
|
||||
@yield('content')
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- jQuery library js -->
|
||||
<script src="{{ asset('assets/js/lib/jquery-3.7.1.min.js') }}"></script>
|
||||
<!-- Bootstrap js -->
|
||||
<script src="{{ asset('assets/js/lib/bootstrap.bundle.min.js') }}"></script>
|
||||
<!-- Apex Chart js -->
|
||||
<script src="{{ asset('assets/js/lib/apexcharts.min.js') }}"></script>
|
||||
<!-- Data Table js -->
|
||||
<script src="{{ asset('assets/js/lib/dataTables.min.js') }}"></script>
|
||||
<!-- Iconify Font js -->
|
||||
<script src="{{ asset('assets/js/lib/iconify-icon.min.js') }}"></script>
|
||||
<!-- jQuery UI js -->
|
||||
<script src="{{ asset('assets/js/lib/jquery-ui.min.js') }}"></script>
|
||||
<!-- Vector Map js -->
|
||||
<script src="{{ asset('assets/js/lib/jquery-jvectormap-2.0.5.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/lib/jquery-jvectormap-world-mill-en.js') }}"></script>
|
||||
<!-- Popup js -->
|
||||
<script src="{{ asset('assets/js/lib/magnifc-popup.min.js') }}"></script>
|
||||
<!-- Slick Slider js -->
|
||||
<script src="{{ asset('assets/js/lib/slick.min.js') }}"></script>
|
||||
<!-- prism js -->
|
||||
<script src="{{ asset('assets/js/lib/prism.js') }}"></script>
|
||||
<!-- file upload js -->
|
||||
<script src="{{ asset('assets/js/lib/file-upload.js') }}"></script>
|
||||
<!-- audioplayer -->
|
||||
<script src="{{ asset('assets/js/lib/audioplayer.js') }}"></script>
|
||||
|
||||
<!-- main js -->
|
||||
<script src="{{ asset('assets/js/app.js') }}"></script>
|
||||
|
||||
<script>
|
||||
// ================== Password Show Hide Js Start ==========
|
||||
function initializePasswordToggle(toggleSelector) {
|
||||
$(toggleSelector).on('click', function() {
|
||||
$(this).toggleClass("ri-eye-off-line");
|
||||
var input = $($(this).attr("data-toggle"));
|
||||
if (input.attr("type") === "password") {
|
||||
input.attr("type", "text");
|
||||
} else {
|
||||
input.attr("type", "password");
|
||||
}
|
||||
});
|
||||
}
|
||||
// Call the function
|
||||
initializePasswordToggle('.toggle-password');
|
||||
// ========================= Password Show Hide Js End ===========================
|
||||
</script>
|
||||
|
||||
</div>
|
||||
<!-- END Main Section -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- END Page Content -->
|
||||
</main>
|
||||
<!-- END Main Container -->
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,105 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Laravel</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html,
|
||||
body {
|
||||
background-color: #fff;
|
||||
color: #636b6f;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 200;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.full-height {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.position-ref {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.top-right {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 18px;
|
||||
}
|
||||
|
||||
.content {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 84px;
|
||||
}
|
||||
|
||||
.links>a {
|
||||
color: #636b6f;
|
||||
padding: 0 25px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: .1rem;
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.m-b-md {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="flex-center position-ref full-height">
|
||||
@if (Route::has('login'))
|
||||
<div class="top-right links">
|
||||
@auth
|
||||
<a href="{{ url('/home') }}">Home</a>
|
||||
@else
|
||||
<a href="{{ route('login') }}">Login</a>
|
||||
|
||||
@if (Route::has('register'))
|
||||
<a href="{{ route('register') }}">Register</a>
|
||||
@endif
|
||||
@endauth
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="content">
|
||||
<div class="title m-b-md">
|
||||
Laravel
|
||||
</div>
|
||||
|
||||
<div class="links">
|
||||
<a href="https://laravel.com/docs">Docs</a>
|
||||
<a href="https://laracasts.com">Laracasts</a>
|
||||
<a href="https://laravel-news.com">News</a>
|
||||
<a href="https://blog.laravel.com">Blog</a>
|
||||
<a href="https://nova.laravel.com">Nova</a>
|
||||
<a href="https://forge.laravel.com">Forge</a>
|
||||
<a href="https://vapor.laravel.com">Vapor</a>
|
||||
<a href="https://github.com/laravel/laravel">GitHub</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,15 +1,21 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\AccountController;
|
||||
use App\Http\Controllers\BotController;
|
||||
use App\Http\Controllers\ContestController;
|
||||
use App\Http\Controllers\HomeController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('/', function () {
|
||||
return view('welcome');
|
||||
});
|
||||
|
||||
Route::view('home', 'home')
|
||||
->name('home')
|
||||
->middleware(['auth']);
|
||||
// Example Routes
|
||||
Route::get('/', [HomeController::class, 'index'])->middleware(['auth']);
|
||||
Route::get('/history', [HomeController::class, 'history'])->middleware(['auth']);
|
||||
|
||||
Route::view('profile', 'profile.edit')
|
||||
->name('profile.edit')
|
||||
->middleware(['auth']);
|
||||
|
||||
Route::get('/aplifier/list', [ContestController::class, 'twitterlist']);
|
||||
Route::get('/aplifier/search', [ContestController::class, 'searchcontest']);
|
||||
|
||||
Route::get('/unread/{user}', [\App\Http\Controllers\APIController::class, 'unread']);
|
||||
|
||||
|
||||
1
storage/app/.gitignore
vendored
1
storage/app/.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
*
|
||||
!private/
|
||||
!public/
|
||||
!.gitignore
|
||||
|
||||
2
storage/app/private/.gitignore
vendored
2
storage/app/private/.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
*
|
||||
!.gitignore
|
||||
@@ -1,20 +0,0 @@
|
||||
import defaultTheme from 'tailwindcss/defaultTheme';
|
||||
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
export default {
|
||||
content: [
|
||||
'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
|
||||
'./storage/framework/views/*.php',
|
||||
'./resources/**/*.blade.php',
|
||||
'./resources/**/*.js',
|
||||
'./resources/**/*.vue',
|
||||
],
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: {
|
||||
sans: ['Figtree', ...defaultTheme.fontFamily.sans],
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
};
|
||||
@@ -4,7 +4,20 @@ import laravel from 'laravel-vite-plugin';
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
laravel({
|
||||
input: ['resources/css/app.css', 'resources/js/app.js'],
|
||||
input: [
|
||||
'resources/sass/main.scss',
|
||||
'resources/sass/dashmix/themes/xeco.scss',
|
||||
'resources/sass/dashmix/themes/xinspire.scss',
|
||||
'resources/sass/dashmix/themes/xmodern.scss',
|
||||
'resources/sass/dashmix/themes/xsmooth.scss',
|
||||
'resources/sass/dashmix/themes/xwork.scss',
|
||||
'resources/sass/dashmix/themes/xdream.scss',
|
||||
'resources/sass/dashmix/themes/xpro.scss',
|
||||
'resources/sass/dashmix/themes/xplay.scss',
|
||||
'resources/js/dashmix/app.js',
|
||||
'resources/js/app.js',
|
||||
'resources/js/pages/datatables.js',
|
||||
],
|
||||
refresh: true,
|
||||
}),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user