RegisterController.php 1.49 KB
<?php

namespace App\Http\Container\AppSection\Controllers\Auth;

use App\Actions\UserRegisterAction;
use App\Helpers\ConfigHelper;
use App\Helpers\JsonResource;
use App\Http\Container\AppSection\Requests\RegisterRequest;
use App\Models\User;
use App\Support\Controller;
use Arr;
use Carbon\Carbon;
use Hikoon\LaravelJwt\Support\Service as JwtService;
use Illuminate\Http\JsonResponse;

class RegisterController extends Controller
{
    public function __construct()
    {
        $this->middleware('emptyToNull');
    }


    /**
     * @param \App\Http\Container\AppSection\Requests\RegisterRequest $request
     * @return \Illuminate\Http\JsonResponse
     * @throws \Exception
     */
    public function __invoke(RegisterRequest $request): JsonResponse
    {

        $data = $request->safe()->merge([
            'status'                => 1,
            'business_singer_limit' => ConfigHelper::getBusinessSingerLimit(),
            'audit_status'          => 1,
            'audit_at'              => Carbon::now()->toDateTimeString(),
        ])->except('code');

        $user = User::create($data);

        UserRegisterAction::dispatchIf($data['register_type'] === 2, $user);

        $token = (new JwtService('app', $request))->generateToken($user);

        return JsonResource::success(JsonResource::SUCCESS, [
            'id'           => $user->getKey(),
            'nick_name'    => $user->getAttribute('nick_name'),
            'access_token' => Arr::get($token, 'access_token', ''),
        ]);

    }
}