diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php
index ef9692d9..d513396d 100644
--- a/app/Actions/Fortify/CreateNewUser.php
+++ b/app/Actions/Fortify/CreateNewUser.php
@@ -11,6 +11,7 @@
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Actions\Compositions\HasAuthAttempt;
+use App\Models\BetaCode;
use Laravel\Fortify\Contracts\CreatesNewUsers;
class CreateNewUser implements CreatesNewUsers
@@ -42,10 +43,21 @@ public function create(array $input): User
'ip_current' => $userIp,
'account_day_of_birth' => strtotime($input['birthday']),
'look' => $input['look'] ?? (getSetting($input['gender'] == 'M' ? 'start_male_look' : 'start_female_look')),
+ 'beta_code' => !! getSetting('beta_period') ? $input['beta_code'] : null,
]), function (User $user) use ($input) {
- if(!isset($input['referrer_code'])) return;
+ if(isset($input['referrer_code'])) {
+ $this->setReferrer($user, $input['referrer_code']);
+ }
- $this->setReferrer($user, $input['referrer_code']);
+ if(isset($input['beta_code'])) {
+ $code = BetaCode::whereCode($input['beta_code'])->whereNull('rescued_at')->first();
+
+ if(!$code) return;
+
+ $code->update([
+ 'rescued_at' => now()
+ ]);
+ }
});
});
}
@@ -92,6 +104,19 @@ private function validateForm(array $input)
$validations['cf-turnstile-response'] = ['required', 'string', new TurnstileCheck];
}
+ if(!! getSetting('beta_period')) {
+ $validations['beta_code'] = ['required', 'string', function($attribute, $value, $fail) {
+ if(! $key = BetaCode::whereCode($value)->whereNull('rescued_at')->first()) {
+ $fail(__('Beta code not found or already used.'));
+ return;
+ }
+
+ if($key->valid_at != null && $key->valid_at->lte(now())) {
+ $fail(__('This beta code has expired.'));
+ }
+ }];
+ }
+
try {
$gender = config('hotel.cms.register.register_looks')[$input['gender']];
diff --git a/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php b/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php
index 73177754..26efcde9 100644
--- a/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php
+++ b/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php
@@ -42,6 +42,10 @@ protected function validateCredentials($request)
$this->throwFailedAuthenticationExceptionDuringMaintenance($request);
}
+ if(!! getSetting('beta_period') && $user->rank < getSetting('min_rank_to_bypass_beta_period') && (!$user->betaCode || $user->betaCode->valid_at->lte(now()))) {
+ $this->throwFailedAuthenticationExceptionDuringBetaPeriod($request);
+ }
+
$this->validateCaptcha($request->all());
if (!$user->homeItems()->count()) {
@@ -63,7 +67,24 @@ protected function throwFailedAuthenticationExceptionDuringMaintenance($request)
$this->limiter->increment($request);
throw ValidationException::withMessages([
- Fortify::username() => ['Only staffs can login during maintenance.'],
+ Fortify::username() => [__('Only staffs can login during maintenance.')],
+ ]);
+ }
+
+ /**
+ * Throw a failed authentication validation exception.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return void
+ *
+ * @throws \Illuminate\Validation\ValidationException
+ */
+ protected function throwFailedAuthenticationExceptionDuringBetaPeriod($request)
+ {
+ $this->limiter->increment($request);
+
+ throw ValidationException::withMessages([
+ Fortify::username() => [__('You need a valid beta code to login.')],
]);
}
diff --git a/app/Filament/Resources/Orion/ArticleResource.php b/app/Filament/Resources/Orion/ArticleResource.php
index c68dc728..4400b082 100644
--- a/app/Filament/Resources/Orion/ArticleResource.php
+++ b/app/Filament/Resources/Orion/ArticleResource.php
@@ -177,6 +177,7 @@ public static function getRelations(): array
{
return [
RelationManagers\TagsRelationManager::class,
+ RelationManagers\CommentsRelationManager::class,
];
}
diff --git a/app/Filament/Resources/Orion/ArticleResource/RelationManagers/CommentsRelationManager.php b/app/Filament/Resources/Orion/ArticleResource/RelationManagers/CommentsRelationManager.php
new file mode 100644
index 00000000..9e577ea9
--- /dev/null
+++ b/app/Filament/Resources/Orion/ArticleResource/RelationManagers/CommentsRelationManager.php
@@ -0,0 +1,73 @@
+schema([
+ Placeholder::make('content')
+ ->label(__('filament::resources.inputs.content'))
+ ->columnSpanFull()
+ ->extraAttributes(['class' => 'border rounded-lg p-2'])
+ ->content(fn (ArticleComment $record): HtmlString => new HtmlString(renderBBCodeText($record->content, true))),
+ ]);
+ }
+
+ public function table(Table $table): Table
+ {
+ return $table
+ ->recordTitleAttribute('id')
+ ->columns([
+ TextColumn::make('id')
+ ->toggleable(),
+
+ TextColumn::make('user.username')
+ ->searchable()
+ ->label(__('filament::resources.columns.by')),
+
+ ToggleColumn::make('visible')
+ ->label(__('filament::resources.columns.visible')),
+
+ ToggleColumn::make('fixed')
+ ->label(__('filament::resources.columns.fixed')),
+
+ ToggleColumn::make('innapropriate')
+ ->label(__('filament::resources.columns.innapropriate')),
+ ])
+ ->filters([
+ //
+ ])
+ ->headerActions([])
+ ->actions([
+ Tables\Actions\ViewAction::make(),
+ ])
+ ->bulkActions([
+ Tables\Actions\BulkActionGroup::make([
+ Tables\Actions\DeleteBulkAction::make(),
+ ]),
+ ]);
+ }
+}
diff --git a/app/Filament/Resources/Orion/BetaCodeResource.php b/app/Filament/Resources/Orion/BetaCodeResource.php
new file mode 100644
index 00000000..e546dd7b
--- /dev/null
+++ b/app/Filament/Resources/Orion/BetaCodeResource.php
@@ -0,0 +1,101 @@
+schema([
+ TextInput::make('code')
+ ->default(\Str::random(60))
+ ->label(__('filament::resources.inputs.code'))
+ ->unique(ignoreRecord: true)
+ ->required()
+ ->columnSpan('full')
+ ->maxLength(64),
+
+ DateTimePicker::make('valid_at')
+ ->label(__('filament::resources.inputs.valid_at'))
+ ->columnSpan('full')
+ ->helperText(__('filament::resources.helpers.beta_code_data_helper'))
+ ]);
+ }
+
+ public static function table(Table $table): Table
+ {
+ return $table
+ ->defaultSort('id', 'desc')
+ ->columns([
+ TextColumn::make('id'),
+
+ TextColumn::make('code')
+ ->label(__('filament::resources.columns.code'))
+ ->limit(30)
+ ->searchable(),
+
+ TextColumn::make('valid_at')
+ ->date('d/m/Y H:i')
+ ->label(__('filament::resources.columns.valid_at')),
+
+ TextColumn::make('rescued_at')
+ ->date('d/m/Y H:i')
+ ->label(__('filament::resources.columns.rescued_at')),
+
+ TextColumn::make('user.username')
+ ->searchable()
+ ->formatStateUsing(fn (?string $state): string => $state ?? '-')
+ ->label(__('filament::resources.columns.username')),
+ ])
+ ->filters([
+ //
+ ])
+ ->actions([
+ Tables\Actions\EditAction::make(),
+ Tables\Actions\ViewAction::make(),
+ ])
+ ->bulkActions([
+ Tables\Actions\BulkActionGroup::make([
+ Tables\Actions\DeleteBulkAction::make(),
+ ]),
+ ]);
+ }
+
+ public static function getRelations(): array
+ {
+ return [
+ //
+ ];
+ }
+
+ public static function getPages(): array
+ {
+ return [
+ 'index' => Pages\ManageBetaCodes::route('/'),
+ ];
+ }
+}
diff --git a/app/Filament/Resources/Orion/BetaCodeResource/Pages/ManageBetaCodes.php b/app/Filament/Resources/Orion/BetaCodeResource/Pages/ManageBetaCodes.php
new file mode 100644
index 00000000..8bc11f04
--- /dev/null
+++ b/app/Filament/Resources/Orion/BetaCodeResource/Pages/ManageBetaCodes.php
@@ -0,0 +1,19 @@
+through([
- fn (string $content, \Closure $next) => $next(str_replace(['[b]', '[/b]'], ['', ''], $content)),
- fn (string $content, \Closure $next) => $next(str_replace(['[i]', '[/i]'], ['', ''], $content)),
- fn (string $content, \Closure $next) => $next(str_replace(['[u]', '[/u]'], ['', ''], $content)),
- fn (string $content, \Closure $next) => $next(str_replace(['[s]', '[/s]'], ['', ''], $content)),
- fn (string $content, \Closure $next) => $next(str_replace(['[h]', '[/h]'], ['', ''], $content)),
+ fn (string $content, \Closure $next) => $next(convertTagsToHtml('[b]', '[/b]', '', '', $content)),
+ fn (string $content, \Closure $next) => $next(convertTagsToHtml('[i]', '[/i]', '', '', $content)),
+ fn (string $content, \Closure $next) => $next(convertTagsToHtml('[u]', '[/u]', '', '', $content)),
+ fn (string $content, \Closure $next) => $next(convertTagsToHtml('[s]', '[/s]', '', '', $content)),
+ fn (string $content, \Closure $next) => $next(convertTagsToHtml('[h]', '[/h]', '', '', $content)),
])->then(fn (string $content) => $reflectLineBreaks ? nl2br($content) : $content);
}
}
diff --git a/app/Http/Controllers/Article/ArticleCommentController.php b/app/Http/Controllers/Article/ArticleCommentController.php
index f9286fa0..c9ffd15b 100644
--- a/app/Http/Controllers/Article/ArticleCommentController.php
+++ b/app/Http/Controllers/Article/ArticleCommentController.php
@@ -14,7 +14,7 @@ class ArticleCommentController extends Controller
public function store(string $id, string $slug, Request $request): JsonResponse
{
$data = $request->validate([
- 'content' => 'required|string|min:5'
+ 'content' => 'required|string'
]);
if (!$article = Article::fromIdAndSlug($id, $slug)->first()) {
@@ -27,6 +27,10 @@ public function store(string $id, string $slug, Request $request): JsonResponse
return $this->jsonResponse(['message' => __('You are commenting too fast')], 422);
}
+ if(strlen(preg_replace("/\[(\/?).*?\]/", '', $data['content'])) < 5) {
+ return $this->jsonResponse(['message' => __('Please, type a valid comment.')], 422);
+ }
+
$comment = $article->comments()->create([
'content' => PreventXssService::sanitize($data['content']),
'user_id' => $user->id
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 43dbbf34..340d1485 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -68,5 +68,6 @@ class Kernel extends HttpKernel
'cms.maintenance' => \App\Http\Middleware\RedirectIfMaintenance::class,
'findretros.vote' => \App\Http\Middleware\RedirectIfVoteMissing::class,
'vpn.prevent' => \App\Http\Middleware\VerifyVpnAddresses::class,
+ 'beta.code' => \App\Http\Middleware\RedirectIfBetaCodeMissing::class,
];
}
diff --git a/app/Http/Middleware/RedirectIfBetaCodeMissing.php b/app/Http/Middleware/RedirectIfBetaCodeMissing.php
new file mode 100644
index 00000000..7702e77d
--- /dev/null
+++ b/app/Http/Middleware/RedirectIfBetaCodeMissing.php
@@ -0,0 +1,33 @@
+rank >= getSetting('min_rank_to_bypass_beta_period')) return $next($request);
+
+ if(!$user->betaCode || $user->betaCode->valid_at->lte(now())) {
+ Auth::logout();
+
+ return to_route('index');
+ }
+
+ return $next($request);
+ }
+}
diff --git a/app/Models/Article/ArticleComment.php b/app/Models/Article/ArticleComment.php
index f8f0c353..18b886b6 100644
--- a/app/Models/Article/ArticleComment.php
+++ b/app/Models/Article/ArticleComment.php
@@ -22,12 +22,13 @@ class ArticleComment extends Model
protected $casts = [
'visible' => 'boolean',
- 'fixed' => 'boolean'
+ 'fixed' => 'boolean',
+ 'innapropriate' => 'boolean'
];
public function scopeDefaultRelationships(Builder $query): void
{
- $query->with([
+ $query->whereVisible(true)->with([
'user:id,username,look',
'user.badges' => fn ($query) => $query->where('slot_id', '<>', '0')
]);
diff --git a/app/Models/BetaCode.php b/app/Models/BetaCode.php
new file mode 100644
index 00000000..8df3a58a
--- /dev/null
+++ b/app/Models/BetaCode.php
@@ -0,0 +1,23 @@
+ 'datetime',
+ 'rescued_at' => 'datetime'
+ ];
+
+ public function user()
+ {
+ return $this->hasOne(User::class, 'beta_code', 'code');
+ }
+}
diff --git a/app/Models/SubNavigation.php b/app/Models/SubNavigation.php
index 7647a776..6f41254b 100644
--- a/app/Models/SubNavigation.php
+++ b/app/Models/SubNavigation.php
@@ -15,6 +15,23 @@ class SubNavigation extends Model
public $timestamps = false;
+ public static function boot(): void
+ {
+ parent::boot();
+
+ static::creating(function (SubNavigation $subNavigation) {
+ if(!str_starts_with($subNavigation->slug, '/')) {
+ $subNavigation->slug = "/{$subNavigation->slug}";
+ }
+ });
+
+ static::updating(function (SubNavigation $subNavigation) {
+ if(!str_starts_with($subNavigation->slug, '/')) {
+ $subNavigation->slug = "/{$subNavigation->slug}";
+ }
+ });
+ }
+
public function navigation()
{
return $this->belongsTo(Navigation::class);
diff --git a/app/Models/User.php b/app/Models/User.php
index 948caa54..6f020b4d 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -74,7 +74,8 @@ class User extends Authenticatable implements FilamentUser, HasName, HasAvatar
'team_id',
'provider_id',
'account_day_of_birth',
- 'is_hidden'
+ 'is_hidden',
+ 'beta_code'
];
/**
@@ -200,6 +201,11 @@ public function rooms(): HasMany
return $this->hasMany(Room::class, 'owner_id');
}
+ public function betaCode()
+ {
+ return $this->belongsTo(BetaCode::class, 'beta_code', 'code');
+ }
+
public function roles(): HasManyThrough
{
return $this->hasManyThrough(
diff --git a/app/Policies/BetaCodePolicy.php b/app/Policies/BetaCodePolicy.php
new file mode 100644
index 00000000..2ebd1983
--- /dev/null
+++ b/app/Policies/BetaCodePolicy.php
@@ -0,0 +1,151 @@
+can('view_any::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can view the model.
+ *
+ * @param \App\Models\User $user
+ * @param \App\Models\BetaCode $betaCode
+ * @return bool
+ */
+ public function view(User $user, BetaCode $betaCode): bool
+ {
+ return $user->can('view::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can create models.
+ *
+ * @param \App\Models\User $user
+ * @return bool
+ */
+ public function create(User $user): bool
+ {
+ return $user->can('create::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can update the model.
+ *
+ * @param \App\Models\User $user
+ * @param \App\Models\BetaCode $betaCode
+ * @return bool
+ */
+ public function update(User $user, BetaCode $betaCode): bool
+ {
+ return $user->can('update::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can delete the model.
+ *
+ * @param \App\Models\User $user
+ * @param \App\Models\BetaCode $betaCode
+ * @return bool
+ */
+ public function delete(User $user, BetaCode $betaCode): bool
+ {
+ return $user->can('delete::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can bulk delete.
+ *
+ * @param \App\Models\User $user
+ * @return bool
+ */
+ public function deleteAny(User $user): bool
+ {
+ return $user->can('delete_any::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can permanently delete.
+ *
+ * @param \App\Models\User $user
+ * @param \App\Models\BetaCode $betaCode
+ * @return bool
+ */
+ public function forceDelete(User $user, BetaCode $betaCode): bool
+ {
+ return $user->can('force_delete::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can permanently bulk delete.
+ *
+ * @param \App\Models\User $user
+ * @return bool
+ */
+ public function forceDeleteAny(User $user): bool
+ {
+ return $user->can('force_delete_any::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can restore.
+ *
+ * @param \App\Models\User $user
+ * @param \App\Models\BetaCode $betaCode
+ * @return bool
+ */
+ public function restore(User $user, BetaCode $betaCode): bool
+ {
+ return $user->can('restore::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can bulk restore.
+ *
+ * @param \App\Models\User $user
+ * @return bool
+ */
+ public function restoreAny(User $user): bool
+ {
+ return $user->can('restore_any::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can replicate.
+ *
+ * @param \App\Models\User $user
+ * @param \App\Models\BetaCode $betaCode
+ * @return bool
+ */
+ public function replicate(User $user, BetaCode $betaCode): bool
+ {
+ return $user->can('replicate::admin::beta_code');
+ }
+
+ /**
+ * Determine whether the user can reorder.
+ *
+ * @param \App\Models\User $user
+ * @return bool
+ */
+ public function reorder(User $user): bool
+ {
+ return $user->can('reorder::admin::beta_code');
+ }
+
+}
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
index 786093e4..9c1f5e88 100644
--- a/app/Providers/RouteServiceProvider.php
+++ b/app/Providers/RouteServiceProvider.php
@@ -34,7 +34,7 @@ public function boot(): void
->name('api.')
->group(base_path('routes/api.php'));
- Route::middleware(['web', 'verify.punishments', 'cms.maintenance'])
+ Route::middleware(['web', 'verify.punishments', 'cms.maintenance', 'beta.code'])
->group(base_path('routes/web.php'));
});
}
diff --git a/config/fortify.php b/config/fortify.php
index c8d6746a..0e215708 100644
--- a/config/fortify.php
+++ b/config/fortify.php
@@ -89,7 +89,7 @@
|
*/
- 'middleware' => ['web', 'cms.maintenance', 'verify.punishments'],
+ 'middleware' => ['web', 'cms.maintenance', 'verify.punishments', 'beta.code'],
/*
|--------------------------------------------------------------------------
diff --git a/database/migrations/2024_06_04_215124_add_innapropriate_column_in_article_comments_table.php b/database/migrations/2024_06_04_215124_add_innapropriate_column_in_article_comments_table.php
new file mode 100644
index 00000000..22285edc
--- /dev/null
+++ b/database/migrations/2024_06_04_215124_add_innapropriate_column_in_article_comments_table.php
@@ -0,0 +1,28 @@
+boolean('innapropriate')->default(false)->after('fixed');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('article_comments', function (Blueprint $table) {
+ $table->dropColumn('innapropriate');
+ });
+ }
+};
diff --git a/database/migrations/2024_06_04_223210_create_beta_codes_table.php b/database/migrations/2024_06_04_223210_create_beta_codes_table.php
new file mode 100644
index 00000000..d8e5b8f9
--- /dev/null
+++ b/database/migrations/2024_06_04_223210_create_beta_codes_table.php
@@ -0,0 +1,33 @@
+id();
+
+ $table->string('code', 64)->unique();
+ $table->timestamp('valid_at')->nullable();
+ $table->timestamp('rescued_at')->nullable();
+
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('beta_codes');
+ }
+};
diff --git a/database/migrations/2024_06_04_223435_add_beta_code_column_to_users_table.php b/database/migrations/2024_06_04_223435_add_beta_code_column_to_users_table.php
new file mode 100644
index 00000000..3a5eb399
--- /dev/null
+++ b/database/migrations/2024_06_04_223435_add_beta_code_column_to_users_table.php
@@ -0,0 +1,28 @@
+string('beta_code', 64)->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('users', function (Blueprint $table) {
+ $table->dropColumn('beta_code');
+ });
+ }
+};
diff --git a/database/seeders/CmsSettingsSeeder.php b/database/seeders/CmsSettingsSeeder.php
index 81b9795c..675c7490 100644
--- a/database/seeders/CmsSettingsSeeder.php
+++ b/database/seeders/CmsSettingsSeeder.php
@@ -250,6 +250,11 @@ public function getDefaultSettings(): array
'staff_notification_image',
'https://i.imgur.com/8IcBBTF.gif',
'The staff notification image to show on the CMS'
+ ],
+ [
+ 'min_rank_to_bypass_beta_period',
+ '5',
+ 'The minimum rank to bypass the beta period'
]
];
}
diff --git a/database/seeders/PermissionRoleSeeder.php b/database/seeders/PermissionRoleSeeder.php
index 0d685f72..50822093 100644
--- a/database/seeders/PermissionRoleSeeder.php
+++ b/database/seeders/PermissionRoleSeeder.php
@@ -20,7 +20,8 @@ class PermissionRoleSeeder extends Seeder
'shop_category',
'shop_product',
'shop_order',
- 'emulator_text'
+ 'emulator_text',
+ 'beta_code',
];
private array $strictSuperModeratorPermissions = [
diff --git a/lang/en.json b/lang/en.json
index 67685b9f..8cc2e923 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -347,5 +347,11 @@
"Your purchase has been delivered! Thank you for supporting us.": "Your purchase has been delivered! Thank you for supporting us.",
"registered using your referral link.": "registered using your referral link.",
"You cannot edit this user!": "You cannot edit this user",
- "You cannot edit users with a higher rank than yours.": "You cannot edit users with a higher rank than yours."
+ "You cannot edit users with a higher rank than yours.": "You cannot edit users with a higher rank than yours.",
+ "Please, type a valid comment.": "Please, type a valid comment.",
+ "This comment has been marked as innapropriate.": "This comment has been marked as innapropriate.",
+ "Beta code not found or already used.": "Beta code not found or already used.",
+ "This beta code has expired.": "This beta code has expired.",
+ "Only staffs can login during maintenance.": "Only staffs can login during maintenance.",
+ "You need a valid beta code to login.": "You need a valid beta code to login."
}
diff --git a/lang/pt_BR.json b/lang/pt_BR.json
index 1a841eeb..e64fa39f 100644
--- a/lang/pt_BR.json
+++ b/lang/pt_BR.json
@@ -347,5 +347,11 @@
"Your purchase has been delivered! Thank you for supporting us.": "Sua compra foi entregue! Obrigado por nos apoiar.",
"registered using your referral link.": "se registrou usando seu link de indicação.",
"You cannot edit this user!": "Você não pode editar este usuário",
- "You cannot edit users with a higher rank than yours.": "Você não pode editar usuários com um cargo mais alto que o seu."
+ "You cannot edit users with a higher rank than yours.": "Você não pode editar usuários com um cargo mais alto que o seu.",
+ "Please, type a valid comment.": "Por favor, digite um comentário válido.",
+ "This comment has been marked as innapropriate.": "Este comentário foi marcado como inapropriado.",
+ "Beta code not found or already used.": "Código beta não encontrado ou já usado.",
+ "This beta code has expired.": "Esse código beta já expirou.",
+ "Only staffs can login during maintenance.": "Apenas staffs podem fazer login durante a manutenção.",
+ "You need a valid beta code to login.": "Você precisa de um código beta válido para fazer login."
}
diff --git a/lang/vendor/filament/da/resources.php b/lang/vendor/filament/da/resources.php
index c6276b5e..d126c812 100644
--- a/lang/vendor/filament/da/resources.php
+++ b/lang/vendor/filament/da/resources.php
@@ -137,6 +137,11 @@
'label' => 'Room Chatlog',
'plural' => 'Room Chatlogs',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Manage Beta Codes',
+ 'label' => 'Code',
+ 'plural' => 'Codes',
+ ],
// Relations
'settings' => [
@@ -212,6 +217,7 @@
'currency_item_data_helper' => 'Enter the currency name below. Can be one of: diamonds, duckets, credits or points',
'rank_item_data_helper' => 'Enter the rank ID below.',
'empty_item_data_helper' => 'Select an item type to view the necessary information.',
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -331,6 +337,8 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At'
],
'columns' => [
@@ -394,6 +402,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -692,5 +704,6 @@
'select_all' => 'Select All',
'deselect_all' => 'Deselect All',
'sent_notifications' => 'Send Notifications',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/lang/vendor/filament/de/resources.php b/lang/vendor/filament/de/resources.php
index 931cdd08..1adaebf3 100644
--- a/lang/vendor/filament/de/resources.php
+++ b/lang/vendor/filament/de/resources.php
@@ -137,6 +137,11 @@
'label' => 'Room Chatlog',
'plural' => 'Room Chatlogs',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Manage Beta Codes',
+ 'label' => 'Code',
+ 'plural' => 'Codes',
+ ],
// Relations
'settings' => [
@@ -212,6 +217,7 @@
'currency_item_data_helper' => 'Enter the currency name below. Can be one of: credits, duckets, diamonds or points',
'rank_item_data_helper' => 'Enter the rank ID below.',
'empty_item_data_helper' => 'Select an item type to view the necessary information.',
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -331,6 +337,8 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At'
],
'columns' => [
@@ -394,6 +402,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -693,6 +705,7 @@
'select_all' => 'Select All',
'deselect_all' => 'Deselect All',
'send_notifications' => 'Send Notifications',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/lang/vendor/filament/en/resources.php b/lang/vendor/filament/en/resources.php
index 931cdd08..c917723a 100644
--- a/lang/vendor/filament/en/resources.php
+++ b/lang/vendor/filament/en/resources.php
@@ -137,6 +137,11 @@
'label' => 'Room Chatlog',
'plural' => 'Room Chatlogs',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Manage Beta Codes',
+ 'label' => 'Code',
+ 'plural' => 'Codes',
+ ],
// Relations
'settings' => [
@@ -212,6 +217,7 @@
'currency_item_data_helper' => 'Enter the currency name below. Can be one of: credits, duckets, diamonds or points',
'rank_item_data_helper' => 'Enter the rank ID below.',
'empty_item_data_helper' => 'Select an item type to view the necessary information.',
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -331,6 +337,8 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
],
'columns' => [
@@ -394,6 +402,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -693,6 +705,7 @@
'select_all' => 'Select All',
'deselect_all' => 'Deselect All',
'send_notifications' => 'Send Notifications',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/lang/vendor/filament/es/resources.php b/lang/vendor/filament/es/resources.php
index d2f01a30..baf035fd 100644
--- a/lang/vendor/filament/es/resources.php
+++ b/lang/vendor/filament/es/resources.php
@@ -137,6 +137,11 @@
'label' => 'Room Chatlog',
'plural' => 'Room Chatlogs',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Manage Beta Codes',
+ 'label' => 'Code',
+ 'plural' => 'Codes',
+ ],
// Relations
'settings' => [
@@ -212,6 +217,7 @@
'currency_item_data_helper' => 'Enter the currency name below. Can be one of: credits, duckets, diamonds or points',
'rank_item_data_helper' => 'Enter the rank ID below.',
'empty_item_data_helper' => 'Select an item type to view the necessary information.',
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -331,6 +337,8 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At'
],
'columns' => [
@@ -394,6 +402,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -693,5 +705,6 @@
'select_all' => 'Select All',
'deselect_all' => 'Deselect All',
'send_notifications' => 'Send Notifications',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/lang/vendor/filament/fi/resources.php b/lang/vendor/filament/fi/resources.php
index 3f56cfe2..f448a06b 100644
--- a/lang/vendor/filament/fi/resources.php
+++ b/lang/vendor/filament/fi/resources.php
@@ -137,6 +137,11 @@
'label' => 'Room Chatlog',
'plural' => 'Room Chatlogs',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Manage Beta Codes',
+ 'label' => 'Code',
+ 'plural' => 'Codes',
+ ],
// Relations
'settings' => [
@@ -212,6 +217,7 @@
'currency_item_data_helper' => 'Enter the currency name below. Can be one of: credits, duckets, diamonds or points',
'rank_item_data_helper' => 'Enter the rank ID below.',
'empty_item_data_helper' => 'Select an item type to view the necessary information.',
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -331,6 +337,8 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At'
],
'columns' => [
@@ -394,6 +402,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -693,5 +705,6 @@
'select_all' => 'Select All',
'deselect_all' => 'Deselect All',
'send_notifications' => 'Send Notifications',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/lang/vendor/filament/fr/resources.php b/lang/vendor/filament/fr/resources.php
index 6c1fe58a..e1df67cb 100644
--- a/lang/vendor/filament/fr/resources.php
+++ b/lang/vendor/filament/fr/resources.php
@@ -212,6 +212,7 @@
'currency_item_data_helper' => 'Enter the currency name below. Can be one of: credits, duckets, diamonds or points',
'rank_item_data_helper' => 'Enter the rank ID below.',
'empty_item_data_helper' => 'Select an item type to view the necessary information.',
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -331,6 +332,8 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
],
'columns' => [
@@ -394,6 +397,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -693,5 +700,6 @@
'select_all' => 'Select All',
'deselect_all' => 'Deselect All',
'send_notifications' => 'Send Notifications',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/lang/vendor/filament/nl/resources.php b/lang/vendor/filament/nl/resources.php
index 752497f7..45d3bf4d 100644
--- a/lang/vendor/filament/nl/resources.php
+++ b/lang/vendor/filament/nl/resources.php
@@ -137,6 +137,11 @@
'label' => 'Room Chatlog',
'plural' => 'Room Chatlogs',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Manage Beta Codes',
+ 'label' => 'Code',
+ 'plural' => 'Codes',
+ ],
// Relations
'settings' => [
@@ -213,6 +218,7 @@
'currency_item_data_helper' => 'Voer hieronder de valutanaam in. Kan een van de volgende zijn: credits, duckets, diamanten of punten.',
'rank_item_data_helper' => 'Voer de Rank ID in.',
'empty_item_data_helper' => 'Selecteer een itemtype om de benodigde informatie te bekijken.',
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -332,6 +338,8 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At'
],
'columns' => [
@@ -395,6 +403,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -694,5 +706,6 @@
'select_all' => 'Selecteer alles',
'deselect_all' => 'Deselecteer alles',
'send_notifications' => 'Stuur notificaties',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/lang/vendor/filament/pt_BR/resources.php b/lang/vendor/filament/pt_BR/resources.php
index 91dc5659..7d5d3c4e 100644
--- a/lang/vendor/filament/pt_BR/resources.php
+++ b/lang/vendor/filament/pt_BR/resources.php
@@ -137,6 +137,11 @@
'label' => 'Mensagem',
'plural' => 'Mensagens',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Gerenciar Códigos Beta',
+ 'label' => 'Código',
+ 'plural' => 'Códigos',
+ ],
// Relations
'settings' => [
@@ -212,6 +217,7 @@
'currency_item_data_helper' => 'Digite abaixo o nome da moeda. Exemplo: credits, duckets, diamonds ou points.',
'rank_item_data_helper' => 'Digite abaixo o ID do rank.',
'empty_item_data_helper' => 'Selecione um tipo de item para ver as informações necessárias.',
+ 'beta_code_data_helper' => 'Deixe vazio caso não queira limitar o código até uma data específica.',
],
'tabs' => [
@@ -331,6 +337,8 @@
'receiver' => 'Destinatário',
'message' => 'Mensagem',
'room' => 'Quarto',
+ 'code' => 'Código',
+ 'valid_at' => 'Válido até',
],
'columns' => [
@@ -394,6 +402,10 @@
'receiver' => 'Destinatário',
'message' => 'Mensagem',
'room' => 'Quarto',
+ 'innapropriate' => 'Inapropriado',
+ 'code' => 'Código',
+ 'valid_at' => 'Válido até',
+ 'rescued_at' => 'Resgatado em',
],
'options' => [
@@ -693,5 +705,6 @@
'select_all' => 'Selecionar Todos',
'deselect_all' => 'Desmarcar Todos',
'send_notifications' => 'Enviar Notificações',
+ 'innapropriate' => 'Inapropriado',
]
];
diff --git a/lang/vendor/filament/tr/resources.php b/lang/vendor/filament/tr/resources.php
index 72fcee1f..ded80175 100644
--- a/lang/vendor/filament/tr/resources.php
+++ b/lang/vendor/filament/tr/resources.php
@@ -137,6 +137,11 @@
'label' => 'Room Chatlog',
'plural' => 'Room Chatlogs',
],
+ 'beta-codes' => [
+ 'navigation_label' => 'Manage Beta Codes',
+ 'label' => 'Code',
+ 'plural' => 'Codes',
+ ],
// Relations
'settings' => [
@@ -212,7 +217,7 @@
'currency_item_data_helper' => 'Para birimi adını aşağıya girin. Şunlardan biri olabilir: credits, duckets, diamonds or points',
'rank_item_data_helper' => 'Rütbe adını aşağıya girin.',
'empty_item_data_helper' => ' Gerekli bilgileri görüntülemek için bir eşya türü seçin.',
-
+ 'beta_code_data_helper' => "Leave it empty if you don't want to limit the code to specific data.",
],
'tabs' => [
@@ -339,6 +344,8 @@
'sender' => 'Sender',
'receiver' => 'Receiver',
'room' => 'Room',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At'
],
'columns' => [
@@ -402,6 +409,10 @@
'receiver' => 'Receiver',
'message' => 'Message',
'room' => 'Room',
+ 'innapropriate' => 'Innapropriate',
+ 'code' => 'Code',
+ 'valid_at' => 'Valid At',
+ 'rescued_at' => 'Rescued At',
],
'options' => [
@@ -701,5 +712,6 @@
'select_all' => 'Select All',
'deselect_all' => 'Deselect All',
'send_notifications' => 'Send Notifications',
+ 'innapropriate' => 'Innapropriate',
]
];
diff --git a/resources/views/components/forms/login.blade.php b/resources/views/components/forms/login.blade.php
index 5194a0c6..0c4ed181 100644
--- a/resources/views/components/forms/login.blade.php
+++ b/resources/views/components/forms/login.blade.php
@@ -50,14 +50,13 @@