middleware('guest'); } /** * Display a listing of the resource. * * @return void */ public function index() { // return view('signup.index'); } /** * Show the form for creating a new resource. * * @return void */ public function create() { // } /** * Store a newly created resource in storage. * * @param CreateAccountRequest $request * @return Response * * @OA\Post( * path="/api/v1/signup", * operationId="postSignup", * tags={"signup"}, * summary="Attempts a new account signup", * description="Attempts a new account signup and returns a CompanyUser object on success", * @OA\Parameter(ref="#/components/parameters/X-Api-Secret"), * @OA\Parameter(ref="#/components/parameters/X-Requested-With"), * @OA\Parameter( * name="token_name", * in="query", * description="A custom name for the user company token", * example="Daves iOS Device", * required=true, * @OA\Schema( * type="string", * format="string", * ), * ), * @OA\RequestBody( * description="Signup credentials", * required=true, * @OA\MediaType( * mediaType="application/json", * @OA\Schema( * type="object", * @OA\Property( * property="email", * description="The user email address", * type="string", * ), * @OA\Property( * property="first_name", * description="The signup users first name", * type="string", * ), * @OA\Property( * property="last_name", * description="The signup users last name", * type="string", * ), * @OA\Property( * property="terms_of_service", * description="The user accepted the terms of service", * type="boolean", * ), * @OA\Property( * property="privacy_policy", * description="The user accepted the privacy policy", * type="boolean", * ), * @OA\Property( * property="password", * example="1234567", * description="The user password must meet minimum criteria ~ >6 characters", * type="string" * ) * ) * ) * ), * @OA\Response( * response=200, * description="The Company User response", * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"), * @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"), * @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"), * @OA\JsonContent(ref="#/components/schemas/CompanyUser"), * ), * @OA\Response( * response=422, * description="Validation error", * @OA\JsonContent(ref="#/components/schemas/ValidationError"), * ), * @OA\Response( * response="default", * description="Unexpected Error", * @OA\JsonContent(ref="#/components/schemas/Error"), * ), * ) */ public function store(CreateAccountRequest $request) { $account = CreateAccount::dispatchNow($request->all(), $request->getClientIp()); if (! ($account instanceof Account)) { return $account; } $ct = CompanyUser::whereUserId(auth()->user()->id); $truth = app()->make(TruthSource::class); $truth->setCompanyUser($ct->first()); $truth->setUser(auth()->user()); $truth->setCompany($ct->first()->company); return $this->listResponse($ct); } }