feat: complete user authentication, admin guard, customer account dashboard and branded HTML emails

This commit is contained in:
2026-11-01 13:55:45 +01:00
parent b6ee6938cb
commit ee89da5e61
37 changed files with 1895 additions and 22 deletions
+7
View File
@@ -4,6 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Order extends Model
@@ -11,6 +12,7 @@ class Order extends Model
use HasFactory;
protected $fillable = [
'user_id',
'order_number',
'customer_name',
'customer_email',
@@ -40,6 +42,11 @@ class Order extends Model
return $this->hasMany(OrderItem::class);
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function getFormattedTotalAttribute(): string
{
return '€ '.number_format($this->total, 2, ',', '.');
+21 -2
View File
@@ -2,15 +2,15 @@
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Database\Factories\UserFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
#[Fillable(['name', 'email', 'password'])]
#[Fillable(['name', 'email', 'password', 'is_admin'])]
#[Hidden(['password', 'remember_token'])]
class User extends Authenticatable
{
@@ -27,6 +27,25 @@ class User extends Authenticatable
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'is_admin' => 'boolean',
];
}
/**
* Check if the user has administrative privileges.
*/
public function isAdmin(): bool
{
return (bool) $this->is_admin;
}
/**
* Orders placed by this user.
*
* @return HasMany<Order, $this>
*/
public function orders(): HasMany
{
return $this->hasMany(Order::class);
}
}