add client api

This commit is contained in:
merdan 2022-10-04 15:43:32 +05:00
parent 2daf706eb1
commit 7962b26c6c
6 changed files with 223 additions and 19 deletions

View File

@ -38,7 +38,7 @@ public function create()
{
return response([
'success' => false,
'message' => trans('app.app.application.fill_profile_message'),
'message' => trans('app.application.fill_profile_message'),
],400);
}
//validate legalization number exists
@ -136,7 +136,7 @@ public function apply()
{
return response([
'success' => false,
'message' => trans('app.app.application.required_docs_message')
'message' => trans('app.application.required_docs_message')
],422);
}
@ -146,7 +146,7 @@ public function apply()
//todo send email to operators
return response([
'success' => true,
'message' => trans('app.app.application.app_success_message')
'message' => trans('app.application.app_success_message')
]);
}

View File

@ -2,6 +2,7 @@
namespace App\Http\Controllers\API;
use App\Http\Requests\API\AddClientRequest;
use App\Http\Requests\API\LoginRequest;
use App\Http\Requests\API\RegisterRequest;
use App\Http\Requests\API\ClientRequest;
@ -19,7 +20,7 @@
use App\Http\Controllers\Controller;
class AuthController extends Controller
class ClientController extends Controller
{
public function login(LoginRequest $request){
@ -59,7 +60,7 @@ public function login(LoginRequest $request){
return response()->json(['message' => Lang::get('auth.email_not_found')], 404);
}
public function register(RegisterRequest $request){
public function signup(RegisterRequest $request){
$client = new Client($request->only(['email','firstname','lastname']));
$client->password = Hash::make($request->input('password'));
@ -197,7 +198,7 @@ public function updatePassword(Request $request) {
catch(\Exception $e){
return response()->json([
'message' => $e->getMessage()
], 500);
], 400);
}
}
@ -220,6 +221,27 @@ public function updateClient(ClientRequest $request){
return response()->json([
'message' => trans('auth.app.account.update_profile_error')
],500);
],400);
}
public function registerClient(AddClientRequest $request)
{
$client = new Client($request->only(['email','firstname','lastname']));
$client->password = Hash::make($request->input('password'));
$client->is_verified = true;
$client->account_id = $request->user()->account_id;
if($client->save()){
return ClientResource::make($client);
}
return response()->json([
'message' => trans('auth.app.account.update_profile_error')
],400);
}
public function accountClients(){
return ClientResource::collection($this->user()->account->clients);
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace App\Http\Requests\API;
use Illuminate\Foundation\Http\FormRequest;
class AddClientRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
'email' => 'required|email|unique:clients,email',
'password' => 'required|min:6',
'firstname' => 'required|string|max:255',
'lastname' => 'required|string|max:255',
];
}
}

View File

@ -26,8 +26,8 @@ public function rules()
return [
'email' => 'required|email|unique:clients,email',
'password' => 'required|min:6',
'firstname' => 'required',
'lastname' => 'required',
'firstname' => 'required|string|max:255',
'lastname' => 'required|string|max:255',
'account_type' => 'required|in:company,business',
'country' => 'required|numeric|gt:0',
];

View File

@ -1,7 +1,7 @@
<?php
use App\Http\Controllers\API\ApplicationController;
use App\Http\Controllers\API\AuthController;
use App\Http\Controllers\API\ClientController;
use App\Http\Controllers\API\ResourceController;
use App\Http\Controllers\API\AccountController;
use App\Http\Controllers\API\TicketController;
@ -15,11 +15,11 @@
*/
Route::middleware(['localization'])->group(function (){
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login'])->middleware("throttle:30,30");
Route::post('/reset-password', [AuthController::class, 'updatePassword']);
Route::post('/forgot-password', [AuthController::class, 'sendPasswordResetLinkEmail']);
Route::post('/verify-email', [AuthController::class, 'verifyEmail']);
Route::post('/register', [ClientController::class, 'signup']);
Route::post('/login', [ClientController::class, 'login'])->middleware("throttle:30,30");
Route::post('/reset-password', [ClientController::class, 'updatePassword']);
Route::post('/forgot-password', [ClientController::class, 'sendPasswordResetLinkEmail']);
Route::post('/verify-email', [ClientController::class, 'verifyEmail']);
Route::get('/countries', [ResourceController::class, 'countries']);
Route::get('/categories', [ResourceController::class, 'categories']);
Route::get('/faqs', [ResourceController::class, 'faqs']);
@ -29,9 +29,10 @@
/**
* Client endpoints
*/
Route::get('/client', [AuthController::class, 'client']);
Route::post('/logout', [AuthController::class, 'logout']);
Route::post('/update-client', [AuthController::class, 'updateClient']);
Route::get('/client', [ClientController::class, 'client']);
Route::post('/logout', [ClientController::class, 'logout']);
Route::post('/update-client', [ClientController::class, 'updateClient']);
/**
* Account endpoints
*/
@ -39,7 +40,8 @@
Route::get('/',[AccountController::class, 'account']);
Route::put('contacts',[AccountController::class,'storeContacts']);
Route::put('bank',[AccountController::class,'storeBankAccount']);
Route::post('add-client', [ClientController::class, 'registerClient']);
Route::get('clients', [ClientController::class, 'accountClients']);
Route::put('profile',[AccountController::class,'storeProfile'])->defaults('_config',[
'request_type' => 'profile'
]);

View File

@ -460,6 +460,153 @@
]
}
},
"/api/account/clients": {
"get": {
"tags": [
"Account"
],
"summary": " - Get account clients",
"operationId": "e809af65c12695106f3cbcf67011e2c2",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json":{
"schema":{
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"bearerAuth": []
}
]
}
},
"/api/account/add-client": {
"post": {
"tags": [
"Account"
],
"summary": " - Add account user",
"operationId": "a718f172ff3ac464d723835815f8fb77",
"parameters": [
{
"name": "X-Localization",
"in": "header",
"description": "Localization",
"required": false,
"schema": {
"type": "string"
},
"examples": {
"ru": {
"summary": "Russian localization",
"value": "ru"
},
"en": {
"summary": "English localization",
"value": "en"
},
"tm": {
"summary": "Turkmen localization",
"value": "tm"
}
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"email": {
"type": "string"
},
"password": {
"type": "string"
}
},
"type": "object",
"example": {
"firstname": "Mahri",
"lastname": "Ilmedova",
"email": "ilmedovamahri@gmail.com",
"password": 12345678,
}
}
}
}
},
"responses": {
"201": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"properties": {
"token": {
"type": "string"
},
"client": {
"properties": {
"id": {
"type": "integer"
},
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"email": {
"type": "string"
},
"is_verified": {
"type": "boolean"
}
},
"type": "object"
}
},
"type": "object"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"properties": {
"message": {
"type": "string"
},
"errors": {
"type": "object"
}
},
"type": "object"
}
}
}
}
}
}
},
"/api/login": {
"post": {
"tags": [