%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/camillo/camillo-api-master/app/Observers/
Upload File :
Create Path :
Current File : /var/www/html/camillo/camillo-api-master/app/Observers/UserObserver.php

<?php

namespace App\Observers;

use App\Enums\UsertypeEnum;
use App\User;
use Chatkit\Chatkit;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;

class UserObserver
{
    /**
     * Handle the user "created" event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function creating(User $user)
    {
        $current_user = auth()->user() ? auth()->user() : auth('api')->user();
        $involved_roles = [UsertypeEnum::PRINCIPAL, UsertypeEnum::ADMIN];
        if (in_array($current_user->usertype->role, $involved_roles)){
            $user->password = Hash::make($user->name);

            if($user->usertype->role === UsertypeEnum::ADMIN){
                $user->active = true;
            }
        }

    }

    /**
     * Handle the user "updated" event.
     *
     * @param  \App\User $user
     *
     * @return void
     * @throws \Chatkit\Exceptions\MissingArgumentException
     */
    public function updated(User $user)
    {
        if ($user->pusher_id && $user->isDirty('active') && !$user->active) {
            $chatkit = new Chatkit([
                'instance_locator' => env('PUSHER_APP_KEY'),
                'key'              => env('PUSHER_APP_SECRET'),
            ]);
            $chatkitUsers = $chatkit->getUsersByID([
                'user_ids' => [$user->pusher_id]
            ]);
            if (count($chatkitUsers['body']) > 0) {
                $rooms = $chatkit->getUserRooms([ 'id' =>  $user->pusher_id]);
                foreach ($rooms['body'] as $room) {
                    $chatkit->removeUsersFromRoom([
                        'user_ids' => [$user->pusher_id],
                        'room_id'  => $room['id'],
                    ]);
                }
            }
        }
    }

    /**
     * Handle the user "deleted" event.
     *
     * @param  \App\User $user
     *
     * @return void
     * @throws \Chatkit\Exceptions\MissingArgumentException
     */
    public function deleted(User $user)
    {
        if ($user->pusher_id) {
            $chatkit = new Chatkit([
                'instance_locator' => env('PUSHER_APP_KEY'),
                'key'              => env('PUSHER_APP_SECRET'),
            ]);
            $chatkitUsers = $chatkit->getUsersByID([
                'user_ids' => [$user->pusher_id]
            ]);
            if (count($chatkitUsers['body']) > 0) {
                $rooms = $chatkit->getUserRooms([ 'id' =>  $user->pusher_id]);
                foreach ($rooms['body'] as $room) {
                    $chatkit->removeUsersFromRoom([
                        'user_ids' => [$user->pusher_id],
                        'room_id'  => $room['id'],
                    ]);
                }
            }
        }
    }

    /**
     * Handle the user "restored" event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function restored(User $user)
    {
        //
    }

    /**
     * Handle the user "force deleted" event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function forceDeleted(User $user)
    {
        //
    }
}

Zerion Mini Shell 1.0