Comment implémenter l'envoi et la notification d'e-mails basés sur les autorisations dans Laravel
Citation :
Dans les sites Web et les applications modernes, le contrôle des autorisations est une fonctionnalité cruciale. Dans Laravel, nous pouvons utiliser la fonction d'autorisation de Laravel pour gérer les autorisations des utilisateurs. Cet article explique comment implémenter l'envoi et la notification d'e-mails basés sur les autorisations dans Laravel. Plus précisément, nous apprendrons comment utiliser les fonctions de courrier électronique et de notification de Laravel, combinées à la fonction d'autorisation, pour mettre en œuvre la gestion des autorisations.
1. Configurer le courrier électronique
Tout d'abord, nous devons configurer le courrier électronique dans Laravel. Ouvrez le fichier .env et assurez-vous que les informations de configuration de la messagerie sont correctement définies. Ces configurations incluent les pilotes de messagerie, les boîtes aux lettres auxquelles les e-mails sont envoyés et les détails du serveur SMTP.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
2 Créer un modèle d'e-mail
Ensuite, nous devons créer un modèle d'e-mail. Dans Laravel, nous pouvons utiliser la commande php artisan make:mail pour générer des classes de courrier et les fichiers de vue correspondants. Exécutez la commande suivante pour créer une classe de courrier nommée PermissionDenied :
php artisan make:mail PermissionDenied
Cette commande créera un fichier de classe nommé PermissionDenied.php dans le répertoire app/Mail.
Dans la classe email, nous pouvons définir le contenu, le sujet, le destinataire et d'autres informations de l'e-mail. Voici un exemple de base :
use IlluminateBusQueueable; use IlluminateMailMailable; use IlluminateQueueSerializesModels; use IlluminateContractsQueueShouldQueue; use SpatiePermissionModelsRole; class PermissionDenied extends Mailable { use Queueable, SerializesModels; protected $role; /** * Create a new message instance. * * @return void */ public function __construct(Role $role) { $this->role = $role; } /** * Build the message. * * @return $this */ public function build() { return $this->view('emails.permission-denied') ->with([ 'role' => $this->role, ]) ->subject('Permission Denied'); } }
3. Créez un modèle de vue d'e-mail
Créez un fichier de vue nommé permission-denied.blade.php dans le répertoire resources/views/emails. Ce fichier servira de modèle de contenu pour l'e-mail. Dans ce fichier, nous pouvons utiliser le moteur de modèles Blade de Laravel pour définir le contenu de l'e-mail. Voici un exemple :
<!DOCTYPE html> <html> <head> <title>Permission Denied</title> </head> <body> <h1>您没有权限访问该页面!</h1> <p>您的角色是: {{ $role->name }}</p> </body> </html>
4. Créez une classe de notification
En plus d'envoyer des e-mails, nous pouvons également utiliser la fonction de notification de Laravel pour envoyer des notifications de refus d'autorisation. De même, nous pouvons utiliser la commande php artisan make:notification pour générer des classes de notification. Exécutez la commande suivante pour créer une classe de notification nommée PermissionDeniedNotification :
php artisan make:notification PermissionDeniedNotification
Cette commande créera un fichier de classe nommé PermissionDeniedNotification.php dans le répertoire app/Notifications.
Dans la classe notification, nous pouvons définir le contenu, la méthode et le destinataire de la notification. Voici un exemple de base :
use IlluminateBusQueueable; use IlluminateNotificationsNotification; use IlluminateContractsQueueShouldQueue; use IlluminateNotificationsMessagesMailMessage; use SpatiePermissionModelsRole; class PermissionDeniedNotification extends Notification { use Queueable; protected $role; /** * Create a new notification instance. * * @return void */ public function __construct(Role $role) { $this->role = $role; } /** * Get the notification's channels. * * @param mixed $notifiable * @return array|string */ public function via($notifiable) { return ['mail']; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return IlluminateNotificationsMessagesMailMessage */ public function toMail($notifiable) { return (new MailMessage) ->subject('Permission Denied') ->markdown('emails.permission-denied', [ 'role' => $this->role, ]); } }
5. Utilisez le contrôle des autorisations pour envoyer des e-mails et des notifications
Désormais, nous pouvons utiliser la fonction d'autorisation de Laravel pour vérifier les autorisations de l'utilisateur et envoyer des e-mails ou des notifications lorsque des conditions spécifiques sont remplies. Dans cet exemple, nous enverrons un e-mail ou une notification à l'utilisateur lorsqu'il ne dispose pas d'autorisations spécifiques.
Ce qui suit est un exemple :
use AppUser; use SpatiePermissionModelsRole; use AppMailPermissionDenied; use AppNotificationsPermissionDeniedNotification; $user = User::findOrFail(1); // 获取用户 $role = Role::findOrFail(2); // 获取角色 if (!$user->hasPermissionTo('edit post')) { // 发送邮件 Mail::to($user)->send(new PermissionDenied($role)); // 或发送通知 $user->notify(new PermissionDeniedNotification($role)); }
L'exemple de code ci-dessus nous indique comment implémenter l'envoi d'e-mails et la notification basés sur l'autorisation dans Laravel. En combinant les fonctions de courrier électronique et de notification de Laravel avec la fonction de contrôle des autorisations, nous pouvons envoyer différents e-mails et notifications en fonction des autorisations de l'utilisateur.
Résumé :
Dans cet article, nous avons appris comment implémenter des e-mails et des notifications basés sur les autorisations dans Laravel. En utilisant les fonctions de courrier électronique et de notification de Laravel, combinées à la fonction d'autorisation, nous pouvons envoyer différents e-mails et notifications en fonction des autorisations de l'utilisateur. Cela nous offre une grande flexibilité dans la mise en œuvre de la gestion des autorisations et des invites utilisateur. Dans les projets réels, nous pouvons l'étendre et le personnaliser en fonction de besoins spécifiques pour répondre aux besoins du projet. J'espère que cet article vous sera utile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!