Mise en prod

This commit is contained in:
hugol
2024-11-16 11:49:20 +01:00
parent a21b69bd8f
commit 3210782a6c
38 changed files with 3486 additions and 6524 deletions

View File

@@ -11,7 +11,7 @@ trim_trailing_whitespace = true
[*.md] [*.md]
trim_trailing_whitespace = false trim_trailing_whitespace = false
[*.{yml,yaml}] [*.{js,yml,yaml}]
indent_size = 2 indent_size = 2
[docker-compose.yml] [docker-compose.yml]

View File

@@ -3,16 +3,14 @@ APP_ENV=local
APP_KEY= APP_KEY=
APP_DEBUG=true APP_DEBUG=true
APP_TIMEZONE=UTC APP_TIMEZONE=UTC
APP_URL=http://localhost APP_URL=http://localhost:8000
APP_LOCALE=en APP_LOCALE=en
APP_FALLBACK_LOCALE=en APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database APP_MAINTENANCE_STORE=database
PHP_CLI_SERVER_WORKERS=4
BCRYPT_ROUNDS=12 BCRYPT_ROUNDS=12

4
.gitignore vendored
View File

@@ -1,15 +1,12 @@
/.phpunit.cache /.phpunit.cache
/node_modules /node_modules
/public/build
/public/hot /public/hot
/public/storage /public/storage
/storage/*.key /storage/*.key
/storage/pail
/vendor /vendor
.env .env
.env.backup .env.backup
.env.production .env.production
.phpactor.json
.phpunit.result.cache .phpunit.result.cache
Homestead.json Homestead.json
Homestead.yaml Homestead.yaml
@@ -19,4 +16,3 @@ yarn-error.log
/.fleet /.fleet
/.idea /.idea
/.vscode /.vscode
/.zed

View File

@@ -2,22 +2,19 @@
namespace App\Models; namespace App\Models;
use Illuminate\Notifications\Notifiable; // use Illuminate\Contracts\Auth\MustVerifyEmail;
use Laravel\Fortify\TwoFactorAuthenticatable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable class User extends Authenticatable
{ {
use HasFactory; use HasFactory, Notifiable;
use Notifiable;
use TwoFactorAuthenticatable;
/** /**
* The attributes that are mass assignable. * The attributes that are mass assignable.
* *
* @var array * @var array<int, string>
*/ */
protected $fillable = [ protected $fillable = [
'name', '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 = [ protected $hidden = [
'password', 'password',
'remember_token', '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 = [ protected $casts = [
'email_verified_at' => 'datetime', 'email_verified_at' => 'datetime',
]; ];
/**
* The accessors to append to the model's array form.
*
* @var array
*/
// protected $appends = [
// 'profile_photo_url',
// ];
} }

View File

@@ -2,6 +2,7 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
@@ -19,6 +20,6 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
// Paginator::useBootstrapFive();
} }
} }

View File

@@ -2,6 +2,7 @@
namespace App\Providers; namespace App\Providers;
use Artesaos\SEOTools\Facades\SEOTools;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Laravel\Fortify\Fortify; use Laravel\Fortify\Fortify;
@@ -25,18 +26,24 @@ class FortifyBootstrapServiceProvider extends ServiceProvider
public function boot() public function boot()
{ {
Fortify::loginView(function () { Fortify::loginView(function () {
SEOTools::setTitle('Connexion');
return view('auth.login'); return view('auth.login');
}); });
/*
Fortify::registerView(function () { Fortify::registerView(function () {
SEOTools::setTitle('Inscription');
return view('auth.register'); return view('auth.register');
}); });
Fortify::requestPasswordResetLinkView(function () { Fortify::requestPasswordResetLinkView(function () {
SEOTools::setTitle('Mot de passe perdu');
return view('auth.forgot-password'); return view('auth.forgot-password');
}); });
Fortify::resetPasswordView(function ($request) { Fortify::resetPasswordView(function ($request) {
SEOTools::setTitle('Changer mot de passe');
return view('auth.reset-password', ['request' => $request]); return view('auth.reset-password', ['request' => $request]);
}); });
@@ -51,5 +58,7 @@ class FortifyBootstrapServiceProvider extends ServiceProvider
Fortify::twoFactorChallengeView(function () { Fortify::twoFactorChallengeView(function () {
return view('auth.two-factor-challenge'); return view('auth.two-factor-challenge');
}); });
*/
} }
} }

View File

@@ -28,7 +28,7 @@ class FortifyServiceProvider extends ServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
//Fortify::createUsersUsing(CreateNewUser::class); Fortify::createUsersUsing(CreateNewUser::class);
Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class); Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
Fortify::updateUserPasswordsUsing(UpdateUserPassword::class); Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
Fortify::resetUserPasswordsUsing(ResetUserPassword::class); Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
@@ -42,33 +42,5 @@ class FortifyServiceProvider extends ServiceProvider
RateLimiter::for('two-factor', function (Request $request) { RateLimiter::for('two-factor', function (Request $request) {
return Limit::perMinute(5)->by($request->session()->get('login.id')); 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');
});
} }
} }

View File

@@ -2,6 +2,7 @@
return [ return [
App\Providers\AppServiceProvider::class, App\Providers\AppServiceProvider::class,
App\Providers\FortifyServiceProvider::class,
App\Providers\FortifyBootstrapServiceProvider::class, App\Providers\FortifyBootstrapServiceProvider::class,
App\Providers\FortifyServiceProvider::class,
App\Providers\NovaServiceProvider::class,
]; ];

View File

@@ -6,18 +6,29 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.2", "php": "^8.2",
"artesaos/seotools": "^1.3",
"foroco/php-browser-detection": "^2.8",
"guzzlehttp/oauth-subscriber": "^0.6.0",
"kamona/fortify-bootstrap": "^1.0", "kamona/fortify-bootstrap": "^1.0",
"laravel/framework": "^11.9", "laravel/framework": "^11.27.2",
"laravel/tinker": "^2.9" "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": { "require-dev": {
"fakerphp/faker": "^1.23", "fakerphp/faker": "^1.23.1",
"laravel/pail": "^1.1", "laravel/pint": "^1.18.1",
"laravel/pint": "^1.13", "laravel/sail": "^1.35",
"laravel/sail": "^1.26", "mockery/mockery": "^1.6.12",
"mockery/mockery": "^1.6", "nunomaduro/collision": "^8.4",
"nunomaduro/collision": "^8.1", "phpunit/phpunit": "^10.5.36",
"phpunit/phpunit": "^11.0.1" "spatie/laravel-ignition": "^2.8"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@@ -31,6 +42,12 @@
"Tests\\": "tests/" "Tests\\": "tests/"
} }
}, },
"repositories": [
{
"type": "path",
"url": "./vendor/nova"
}
],
"scripts": { "scripts": {
"post-autoload-dump": [ "post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
@@ -46,10 +63,6 @@
"@php artisan key:generate --ansi", "@php artisan key:generate --ansi",
"@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"", "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
"@php artisan migrate --graceful --ansi" "@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": { "extra": {

2925
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -26,7 +26,7 @@ return [
| well as their drivers. You may even define multiple stores for the | well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches. | 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" | "redis", "dynamodb", "octane", "null"
| |
*/ */
@@ -40,10 +40,9 @@ return [
'database' => [ 'database' => [
'driver' => 'database', 'driver' => 'database',
'connection' => env('DB_CACHE_CONNECTION'),
'table' => env('DB_CACHE_TABLE', 'cache'), 'table' => env('DB_CACHE_TABLE', 'cache'),
'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), 'connection' => env('DB_CACHE_CONNECTION', null),
'lock_table' => env('DB_CACHE_LOCK_TABLE'), 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION', null),
], ],
'file' => [ 'file' => [

View File

@@ -37,9 +37,6 @@ return [
'database' => env('DB_DATABASE', database_path('database.sqlite')), 'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '', 'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
'busy_timeout' => null,
'journal_mode' => null,
'synchronous' => null,
], ],
'mysql' => [ 'mysql' => [

View File

@@ -24,7 +24,7 @@ return [
| may even configure multiple disks for the same driver. Examples for | may even configure multiple disks for the same driver. Examples for
| most supported storage drivers are configured here for reference. | 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' => [ 'local' => [
'driver' => 'local', 'driver' => 'local',
'root' => storage_path('app/private'), 'root' => storage_path('app'),
'serve' => true,
'throw' => false, 'throw' => false,
], ],

View File

@@ -45,7 +45,7 @@ return [
| utilizes the Monolog PHP logging library, which includes a variety | utilizes the Monolog PHP logging library, which includes a variety
| of powerful log handlers and formatters that you're free to use. | 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" | "errorlog", "monolog", "custom", "stack"
| |
*/ */

View File

@@ -30,8 +30,7 @@ return [
| your mailers below. You may also add additional mailers if needed. | your mailers below. You may also add additional mailers if needed.
| |
| Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
| "postmark", "resend", "log", "array", | "postmark", "log", "array", "failover", "roundrobin"
| "failover", "roundrobin"
| |
*/ */
@@ -46,7 +45,7 @@ return [
'username' => env('MAIL_USERNAME'), 'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'), 'password' => env('MAIL_PASSWORD'),
'timeout' => null, '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' => [ 'ses' => [
@@ -61,10 +60,6 @@ return [
// ], // ],
], ],
'resend' => [
'transport' => 'resend',
],
'sendmail' => [ 'sendmail' => [
'transport' => 'sendmail', 'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
@@ -87,14 +82,6 @@ return [
], ],
], ],
'roundrobin' => [
'transport' => 'roundrobin',
'mailers' => [
'ses',
'postmark',
],
],
], ],
/* /*

View File

@@ -36,10 +36,10 @@ return [
'database' => [ 'database' => [
'driver' => 'database', 'driver' => 'database',
'connection' => env('DB_QUEUE_CONNECTION'), 'connection' => env('DB_QUEUE_CONNECTION', null),
'table' => env('DB_QUEUE_TABLE', 'jobs'), 'table' => env('DB_QUEUE_TABLE', 'jobs'),
'queue' => env('DB_QUEUE', 'default'), '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, 'after_commit' => false,
], ],
@@ -47,7 +47,7 @@ return [
'driver' => 'beanstalkd', 'driver' => 'beanstalkd',
'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'),
'queue' => env('BEANSTALKD_QUEUE', 'default'), '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, 'block_for' => 0,
'after_commit' => false, 'after_commit' => false,
], ],
@@ -67,7 +67,7 @@ return [
'driver' => 'redis', 'driver' => 'redis',
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
'queue' => env('REDIS_QUEUE', '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, 'block_for' => null,
'after_commit' => false, 'after_commit' => false,
], ],

View File

@@ -24,10 +24,6 @@ return [
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
], ],
'resend' => [
'key' => env('RESEND_KEY'),
],
'slack' => [ 'slack' => [
'notifications' => [ 'notifications' => [
'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),

View File

@@ -125,6 +125,7 @@ return [
| the framework. Typically, you should not need to change this value | the framework. Typically, you should not need to change this value
| since doing so does not grant a meaningful security improvement. | since doing so does not grant a meaningful security improvement.
| |
|
*/ */
'cookie' => env( 'cookie' => env(

268
config/twitter.php Normal file
View 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'
],
];

View File

@@ -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',
] : []));
});
}
};

View File

@@ -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',
] : []));
});
}
};

5802
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,23 +2,24 @@
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "vite build", "dev": "vite",
"dev": "vite" "build": "vite build"
}, },
"devDependencies": { "devDependencies": {
"@popperjs/core": "^2.11.2", "@popperjs/core": "^2.11.2",
"autoprefixer": "^10.4.20", "axios": "^1.6.4",
"axios": "^1.7.4",
"bootstrap": "^5.1.3", "bootstrap": "^5.1.3",
"concurrently": "^9.0.1",
"laravel-vite-plugin": "^1.0", "laravel-vite-plugin": "^1.0",
"postcss": "^8.4.47", "resolve-url-loader": "^5.0.0",
"resolve-url-loader": "^2.3.1",
"sass": "^1.32.11", "sass": "^1.32.11",
"sass-loader": "^11.0.1", "sass-loader": "^11.0.1",
"tailwindcss": "^3.4.13",
"vite": "^5.0", "vite": "^5.0",
"vue": "^3.2.31", "vue": "^3.2.31",
"vue-loader": "^16.2.0" "vue-loader": "^16.2.0"
},
"dependencies": {
"@popperjs/core": "^2.11.8",
"bootstrap": "5.3.3",
"simplebar": "^6.2.5"
} }
} }

View File

@@ -1,6 +0,0 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};

View File

@@ -1,2 +1,2 @@
User-agent: * User-agent: *
Disallow: Disallow: /

View File

@@ -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>

View File

@@ -1,60 +1,67 @@
@extends('layouts.auth') @extends('layouts.auth')
@section('content') @section('content')
<div class="max-w-464-px mx-auto w-100"> <!-- Header -->
<div> <div class="mb-3 text-center">
<a href="/" class="mb-40 max-w-290-px"> <a class="fw-bold fs-1" href="/">
<img src="{{ asset('assets/images/logo.png') }}" alt=""> <img src="{{url('/')}}/media/logo.png" class="img-fluid mx-auto">
</a> </a>
<h4 class="mb-12">Se Connecter</h4> <p class="text-uppercase fw-bold fs-sm text-muted">Se connecter!</p>
<p class="mb-32 text-secondary-light text-lg">Prêt à tout dechirer !</p> </div>
</div> <!-- END Header -->
@if (session('status')) <div class="row g-0 justify-content-center">
<div class="alert alert-success" role="alert"> <div class="col-sm-8 col-xl-6">
{{ session('status') }} <form class="js-validation-signin" method="POST" action="{{ route('login') }}" novalidate="novalidate">
</div> @csrf
@endif
<form method="POST" action="{{ route('login') }}"> <div class="mb-3">
@csrf <input id="email" type="email" class="form-control @error('email') is-invalid @enderror"
<div class="icon-field mb-16"> name="email" value="{{ old('email') }}" required autocomplete="email" autofocus placeholder="Email">
<span class="icon top-50 translate-middle-y">
<iconify-icon icon="mage:email"></iconify-icon> @error('email')
</span> <span class="invalid-feedback" role="alert">
<input id="email" type="email" class="form-control h-56-px bg-neutral-50 radius-12 @error('email') is-invalid @enderror" <strong>{{ $message }}</strong>
name="email" value="{{ old('email') }}" required autocomplete="email" placeholder="Email" autofocus> </span>
</div> @enderror
@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">
<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>
<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> </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> <div class="mb-3">
@error('password') <input id="password" type="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"> class="form-control @error('password') is-invalid @enderror" name="password"
<strong>{{ $message }}</strong> required autocomplete="current-password" placeholder="Mot de passe">
</span>
@enderror @error('password')
<div class=""> <span class="invalid-feedback" role="alert">
<div class="d-flex justify-content-between gap-2"> <strong>{{ $message }}</strong>
<div class="form-check style-check d-flex align-items-center"> </span>
<input class="form-check-input border border-neutral-300" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> @enderror
<label class="form-check-label" for="remember">Se seouvenir de moi </label> </div>
<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>
</div> </div>
</div> <button type="submit" class="btn w-100 btn-lg btn-hero btn-primary mb-3">Connexion
</button>
<button type="submit" class="btn btn-primary text-sm btn-sm px-12 py-16 w-100 radius-12 mt-32"> Connexion</button> <p class="text-center">
<a href="/forgot-password" class="text-black">
</form> <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> </div>
@endsection @endsection

View File

@@ -1,4 +1,4 @@
@extends('layouts.app') @extends('layouts.auth')
@section('content') @section('content')
<div class="container"> <div class="container">

View 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

View 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

View File

@@ -1,88 +1,138 @@
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<!doctype html>
<html lang="en">
<head> <head>
<meta charset="utf-8"> <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 --> <!-- CSRF Token -->
<meta name="csrf-token" content="{{ 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 --> {!! SEO::generate(true) !!}
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Fonts --> <!-- Modules -->
<link rel="dns-prefetch" href="//fonts.gstatic.com"> @yield('css')
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet"> @vite(['resources/sass/main.scss', 'resources/js/dashmix/app.js'])
<script src="{{ asset('js/setTheme.js') }}"></script>
<!-- Styles --> @yield('js')
<link href="{{ asset('css/app.css') }}" rel="stylesheet"> @livewireStyles
@laravelPWA
</head> </head>
<body> <body>
<div id="app"> <div id="page-container" class="sidebar-o sidebar-dark enable-page-overlay side-scroll page-header-fixed main-content-narrow">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm"> <nav id="sidebar" aria-label="Main Navigation">
<div class="container"> <div class="smini-hidden">
<a class="navbar-brand" href="{{ url('/') }}"> <div class="content-header justify-content-lg-center bg-white">
{{ config('app.name', 'Laravel') }} <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> </a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" <div class="d-lg-none">
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" <button type="button" class="btn btn-sm btn-alt-secondary d-lg-none" data-toggle="layout" data-action="sidebar_close">
aria-label="{{ __('Toggle navigation') }}"> <i class="fa fa-times-circle"></i>
<span class="navbar-toggler-icon"></span> </button>
</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>
</li>
@endguest
</ul>
</div> </div>
</div> </div>
</nav> </div>
<div class="js-sidebar-scroll">
<main class="py-4"> <div class="smini-hidden">
@yield('content') <div class="content-side content-side-full bg-black-10 d-flex align-items-center">
</main> <a class="img-link d-inline-block">
</div> <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>
</ul>
</div>
</div>
</nav>
<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> </body>
</html> </html>

View File

@@ -1,101 +1,51 @@
<!DOCTYPE html> <!doctype html>
<html lang="fr" data-theme="light"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" href="{{ asset('assets/images/favicon.png') }}" sizes="16x16"> <meta name="robots" content="noindex, nofollow">
<!-- remix icon font css --> <!-- CSRF Token -->
<link rel="stylesheet" href="{{ asset('assets/css/remixicon.css') }}"> <meta name="csrf-token" content="{{ csrf_token() }}">
<!-- 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') }}">
<link rel="stylesheet" href="{{ asset('assets/css/lib/audioplayer.css') }}"> <link rel="shortcut icon" href="{{url('/')}}/media/favicons/favicon.png">
<!-- main css --> <link rel="icon" type="image/png" sizes="192x192" href="{{url('/')}}/media/favicons/favicon-192x192.png">
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}"> <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> </head>
<body> <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>
<div class="auth-left d-lg-block d-none"> </div>
<div class="d-flex align-items-center flex-column h-100 justify-content-center"> <!-- END Meta Info Section -->
<img src="{{ asset('assets/images/auth/auth-img.png') }}" alt=""> <!-- 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>
</div>
<!-- END Main Section -->
</div>
</div> </div>
</div> <!-- END Page Content -->
<div class="auth-right py-32 px-24 d-flex flex-column justify-content-center"> </main>
@yield('content') <!-- END Main Container -->
</div> </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>
</body> </body>
</html> </html>

View File

@@ -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>

View File

@@ -1,15 +1,21 @@
<?php <?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; use Illuminate\Support\Facades\Route;
Route::get('/', function () { // Example Routes
return view('welcome'); Route::get('/', [HomeController::class, 'index'])->middleware(['auth']);
}); Route::get('/history', [HomeController::class, 'history'])->middleware(['auth']);
Route::view('home', 'home')
->name('home')
->middleware(['auth']);
Route::view('profile', 'profile.edit') Route::view('profile', 'profile.edit')
->name('profile.edit') ->name('profile.edit')
->middleware(['auth']); ->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']);

View File

@@ -1,4 +1,3 @@
* *
!private/
!public/ !public/
!.gitignore !.gitignore

View File

@@ -1,2 +0,0 @@
*
!.gitignore

View File

@@ -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: [],
};

View File

@@ -4,7 +4,20 @@ import laravel from 'laravel-vite-plugin';
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
laravel({ 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, refresh: true,
}), }),
], ],