Overview
TheUser model extends Laravel’s Authenticatable class and implements email verification and media management capabilities. It uses Spatie’s Permission package for role-based access control and Media Library for avatar management.
Namespace: App\Models\User
Extends: Illuminate\Foundation\Auth\User as Authenticatable
Implements:
Illuminate\Contracts\Auth\MustVerifyEmailSpatie\MediaLibrary\HasMedia
HasFactory- Model factory supportHasRoles- Spatie Permission package for roles and permissionsNotifiable- Laravel notification supportInteractsWithMedia- Spatie Media Library integration
Properties
Fillable Attributes
The user’s full name
The user’s email address (used for authentication)
The user’s hashed password
Hidden Attributes
These attributes are automatically hidden from JSON serialization:Hidden from serialization for security
Hidden from serialization for security
Casts
Automatically cast to Carbon datetime instance
Automatically hashed when set
Relationships
links()
Type:hasMany
Related Model: App\Models\Link
Description: Returns all URL shortener links created by this user.
Methods
initials()
Returns:string
Description: Generates the user’s initials from their name by taking the first letter of each word.
registerMediaCollections()
Returns:void
Description: Registers the ‘avatars’ media collection for user profile pictures. This collection is configured as single file, meaning only one avatar can be assigned at a time.
registerMediaConversions()
Parameters:$media-Spatie\MediaLibrary\MediaCollections\Models\Media|null
void
Description: Defines image conversions for uploaded avatars. Creates a ‘preview’ conversion that fits the image to 300x300 pixels.
Usage Examples
Creating a User
Assigning Roles and Permissions
Working with Avatars
Getting User Initials
Accessing User Links
Database Schema
The users table includes:id- Primary keyname- User’s full nameemail- Unique email addressemail_verified_at- Timestamp of email verificationpassword- Hashed passwordremember_token- Remember me tokencreated_at- Timestampupdated_at- Timestamp
Related Models
- Link - URL shortener links created by users