Вход Регистрация
Файл: vendor/protonemedia/laravel-verify-new-email/src/PendingUserEmail.php
Строк: 65
<?php

namespace ProtoneMediaLaravelVerifyNewEmail;

use 
IlluminateAuthEventsVerified;
use 
IlluminateDatabaseEloquentModel;
use 
IlluminateDatabaseEloquentRelationsMorphTo;
use 
IlluminateSupportFacadesURL;
use 
IlluminateSupportTraitsTappable;

class 
PendingUserEmail extends Model
{
    use 
Tappable;

    
/**
     * This model won't be updated.
     */
    
const UPDATED_AT null;

    
/**
     * @var array
     */
    
protected $guarded = [];

    
/**
     * User relationship
     *
     * @return IlluminateDatabaseEloquentRelationsMorphTo
     */
    
public function user(): MorphTo
    
{
        return 
$this->morphTo('user');
    }

    
/**
     * Scope for the user.
     *
     * @param $query
     * @param IlluminateDatabaseEloquentModel $user
     * @return void
     */
    
public function scopeForUser($queryModel $user)
    {
        
$query->where([
            
$this->qualifyColumn('user_type') => get_class($user),
            
$this->qualifyColumn('user_id')   => $user->getKey(),
        ]);
    }

    
/**
     * Updates the associated user and removes all pending models with this email.
     *
     * @return void
     */
    
public function activate()
    {
        
$user $this->user;

        
$dispatchEvent = !$user->hasVerifiedEmail() || $user->email !== $this->email;

        
$user->email $this->email;
        
$user->save();
        
$user->markEmailAsVerified();

        static::
whereEmail($this->email)->get()->each->delete();

        
$dispatchEvent event(new Verified($user)) : null;
    }

    
/**
     * Creates a temporary signed URL to verify the pending email.
     *
     * @return string
     */
    
public function verificationUrl(): string
    
{
        return 
URL::temporarySignedRoute(
            
config('verify-new-email.route') ?: 'pendingEmail.verify',
            
now()->addMinutes(config('auth.verification.expire'60)),
            [
'token' => $this->token]
        );
    }
}
Онлайн: 0
Реклама