���Root Mod By V1rus_Alfa
User / IP
:
216.73.217.78
Host / Server
:
195.214.235.115 / npln.ir
System
:
Linux damavand.pws-dns.net 5.14.0-503.35.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 4 05:23:43 EDT 2025 x86_64
Command
|
Upload
|
Mass Deface
|
Create
:
/
home2
/
cutunixc
/
repositories
/
dasterang-api
/
modules
/
Identity
/
Http
/
Controllers
/
Api
/
Viewing: UserController.php
<?php namespace Modules\Identity\Http\Controllers\Api; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Modules\Identity\Models\User; use App\Http\Controllers\FunctionController; use Illuminate\Support\Str; use Modules\Identity\Models\UserVip; use Modules\Identity\Http\Resources\User\UserResource; use OpenApi\Annotations as OA; use Ramsey\Uuid\Uuid; class UserController extends Controller { public static function userVipFun($user_id) { $userVip = UserVip::where('user_id', $user_id)->orderBy('end_date', 'desc')->first(); if ($userVip) { if ($userVip->end_date < date('Y/m/d')) { $start_date = date('Y/m/d'); $day = 12 * 31; $end_date = date('Y/m/d', strtotime($start_date . " +$day day")); } else { $start_date = $userVip->end_date; $day = 12 * 31; $end_date = date('Y/m/d', strtotime($start_date . " +$day day")); } } else { $start_date = date('Y/m/d'); $day = 12 * 31; $end_date = date('Y/m/d', strtotime($start_date . " +$day day")); } UserVip::create([ 'user_id' => $user_id, 'start_date' => $start_date, 'end_date' => $end_date ]); } public static function setToken() { do { $token = Str::random(100); $user_token = User::where('token', $token)->get(); } while (!$user_token->isEmpty()); return $token; } public static function checkToken($token) { $user = User::where('token', $token)->first(); if ($user) return $user; else return false; } /** * @OA\Tag( * name = "Identity", * description = "endpoints for user" * ) * @OA\Post( * path = "/api/check-token", * operationId = "checkUserToken", * tags = {"Identity"}, * summary = "check user token", * description = "check user token", * @OA\RequestBody( * required = true, * @OA\JsonContent( * type= "object", * required = {"token"}, * @OA\Property( * property="token", * type="string" * ) * ), * ), * @OA\Response( * response = 409, * description = "bad request" * ), * @OA\Response( * response = 200, * description = "success" * ), * @OA\Response( * response = 401, * description = "invalid token" * ) * ) * @param \Illuminate\Http\Request $request * @return mixed|\Illuminate\Http\JsonResponse */ public function checkUserToken(Request $request) { $message = [ 'required' => ':attribute وارد نشده است.', ]; $attribut = [ 'token' => 'توکن', ]; $val = Validator::make( $request->all(), [ 'token' => 'required', ], $message, $attribut ); if ($val->fails()) { return response()->json([ 'code' => 409, 'status' => 'error', 'response' => $val->errors()->first() ], 409); } else { $user = $this->checkToken($request->bearerToken()); if ($user) { return response()->json([ 'code' => 200, 'status' => 'success', 'response' => $user ], 200); } else { return response()->json([ 'code' => 401, 'status' => 'error', 'response' => 'توکن شما منقضی شده است' ], 401); } } } /** * @OA\Post( * path = "/api/auth", * operationId = "sendCode", * tags = {"Identity"}, * summary = "send code to user", * description = "send code to user . in this action you recived a code copy that and use in login action", * @OA\RequestBody( * required = true, * @OA\JsonContent( * type = "object", * required = {"mobile"}, * @OA\Property( * property = "mobile", * type = "string" * ) * ), * ), * @OA\Response( * response=200, * description="success", * @OA\JsonContent() * ), * @OA\Response( * response=400, * description="bad request", * @OA\JsonContent() * ) * * ) * @param \Illuminate\Http\Request $request * @return array{code: int, response: string, status: string|mixed|\Illuminate\Http\JsonResponse} */ public function sendCode(Request $request) { Validator::extend('mobile', function ($attribute, $value) { return preg_match('/^09(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])-?[0-9]{3}-?[0-9]{4}$/', FunctionController::convert($value)); }); $message = [ 'required' => ':attribute وارد نشده است.', 'mobile' => ':attribute نامعتبر می باشد.', ]; $attribut = [ 'mobile' => 'شماره همراه', ]; $val = Validator::make( $request->all(), [ 'mobile' => 'required|mobile', ], $message, $attribut ); if ($val->fails()) { return [ 'code' => 200, 'status' => 'error', 'response' => $val->errors()->first() ]; } else { $mobile = $request->mobile; $code = rand(10000, 99999); $mobile = FunctionController::convert($request->input('mobile')); $model = User::where('mobile', $mobile)->first(); $check = FunctionController::sendsms($code, $mobile); if ($model) { $model->update([ 'sms_code' => $code ]); return response()->json([ 'status' => 'success', 'response' => $code ], 200); } else { $token = $this->setToken(); $userM = User::create([ 'name' => '', 'sms_code' => $code, 'mobile' => $mobile, 'province_id' => 0, 'city_id' => 0, 'token' => $token ]); $this->userVipFun($userM->id); return response()->json([ 'status' => 'success', ], 200); } } } //most be checked /** * @OA\Post( * path = "/api/check-user", * operationId = "checkUser", * tags = {"Identity"}, * summary = "check user by mobile", * description = "check user by mobile", * @OA\RequestBody( * required = true, * @OA\JsonContent( * type = "object", * required = {"mobile","code"}, * @OA\Property( * property = "mobile", * type = "string" * ), * @OA\Property( * property = "code", * type = "integer" * ) * ), * ), * @OA\Response( * response=200, * description="success", * @OA\JsonContent() * ), * @OA\Response( * response=400, * description="bad request", * @OA\JsonContent() * ) * * ) * @param \Illuminate\Http\Request $request * @return array{code: int, response: string, status: string|mixed|\Illuminate\Http\JsonResponse} */ public function checkUser(Request $request) { Validator::extend('mobile', function ($attribute, $value) { return preg_match('/^09(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])-?[0-9]{3}-?[0-9]{4}$/', FunctionController::convert($value)); }); $message = [ 'required' => ':attribute وارد نشده است.', 'mobile' => ':attribute نامعتبر می باشد.', ]; $attribut = [ 'mobile' => 'شماره همراه', ]; $val = Validator::make( $request->all(), [ 'mobile' => 'required|mobile', ], $message, $attribut ); if ($val->fails()) { return [ 'code' => 200, 'status' => 'error', 'response' => $val->errors()->first() ]; } else { $model = User::where('mobile', $request->input('mobile'))->first(); if ($model) { return [ 'code' => 200, 'status' => 'success', 'response' => 'exist' ]; } else { return [ 'code' => 200, 'status' => 'success', 'response' => null ]; } } } /** * @OA\Post( * path = "/api/login", * operationId = "login", * tags = {"Identity"}, * summary = "login user by mobile", * description = "login user by mobile and code", * @OA\RequestBody( * required = true, * @OA\JsonContent( * type = "object", * required = {"mobile","code"}, * @OA\Property( * property = "mobile", * type = "string" * ), * @OA\Property( * property = "code", * type = "integer" * ) * ), * ), * @OA\Response( * response=200, * description="success", * @OA\JsonContent() * ), * @OA\Response( * response=409, * description="invalid code", * @OA\JsonContent() * ) * * ) * @param \Illuminate\Http\Request $request * @return array{code: int, response: string, status: string|mixed|\Illuminate\Http\JsonResponse} */ public function login(Request $request) { Validator::extend('mobile', function ($attribute, $value) { return preg_match('/^09(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])-?[0-9]{3}-?[0-9]{4}$/', FunctionController::convert($value)); }); $message = [ 'required' => ':attribute وارد نشده است.', 'mobile' => ':attribute نامعتبر می باشد.', ]; $attribut = [ 'mobile' => 'شماره همراه', 'code' => 'کد امنیتی' ]; $val = Validator::make( $request->all(), [ 'mobile' => 'mobile', 'code' => 'required', ], $message, $attribut ); if ($val->fails()) { return response()->json([ 'code' => 409, 'status' => 'error', 'response' => $val->errors()->first() ], 409); } else { $mobile = FunctionController::convert($request->input('mobile')); if ($request->input('code')) { $user = User::where('mobile', $mobile)->where('sms_code', $request->input('code'))->first(); } else { $user = User::where('mobile', $mobile)->first(); } if ($user) { $user->assignRole('کاربر'); return response()->json([ 'status' => 'success', 'role' => $user->getRoleNames(), 'permissions' => $user->getAllPermissions()->pluck('name'), 'user' => new UserResource($user) ], 200); } else { return response()->json([ 'code' => 409, 'status' => 'error', 'response' => 'کد فعال سازی اشتباه است' ], 409); } } } /** * @OA\Post( * path = "/api/register", * operationId = "register", * tags = {"Identity"}, * summary = "register user by mobile", * description = "register user by mobile", * @OA\RequestBody( * required =true, * @OA\MediaType( * mediaType = "multipart/form-data", * @OA\Schema( * type = "object", * required = {"mobile","province_id","city_id"}, * @OA\Property( * property = "mobile", * type = "string" * ) * , * @OA\Property( * property = "province_id", * type = "integer" * ), * @OA\Property( * property = "city_id", * type = "integer" * ), * @OA\Property( * property = "first_name", * type = "string", * ), * @OA\Property( * property = "last_name", * type = "string", * ) * ) * ) * ) * , * @OA\Response( * response=200, * description="success", * @OA\JsonContent() * ), * @OA\Response( * response=409, * description="invalid info", * @OA\JsonContent() * ) * * ) * @param \Illuminate\Http\Request $request * @return array{code: int, response: string, status: string|mixed|\Illuminate\Http\JsonResponse} */ public function register(Request $request) { Validator::extend('mobile', function ($attribute, $value) { return preg_match('/^09(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])-?[0-9]{3}-?[0-9]{4}$/', FunctionController::convert($value)); }); $message = [ 'required' => ':attribute وارد نشده است.', 'numeric' => ':attribute نامعتبر می باشد.', 'mobile' => ':attribute نامعتبر می باشد.', ]; $attribut = [ 'mobile' => 'شماره همراه', 'province_id' => 'استان', 'city_id' => 'شهر', ]; $val = Validator::make( $request->all(), [ 'mobile' => 'mobile', 'province_id' => 'required|numeric', 'city_id' => 'required|numeric', // 'first_name'=>'required|numeric', // 'last_name'=>'required|numeric' ], $message, $attribut ); if ($val->fails()) { return response()->json([ 'code' => 409, 'status' => 'error', 'response' => $val->errors()->first() ]); } else { $mobile = FunctionController::convert($request->input('mobile')); $user = User::where('mobile', $mobile)->first(); if ($user) { $token = $this->setToken(); $user->first_name = request()->input('first_name'); $user->last_name = request()->input('last_name'); $user->city_id = request()->input('city_id'); $user->province_id = request()->input('province_id'); $user->save(); $this->userVipFun($user->id); if ($user) { return response()->json([ 'response' => $user->fresh() ], 200); } else { return response()->json([ 'response' => 'خطا در ثبت اطلاعات' ], 409); } } else { return response()->json([ 'response' => 'کاربر با شماره موبایل فوق در سیستم وجود ندارد' ], 404); } } } /** * @OA\Post( * path = "/api/update", * operationId = "userupdate", * tags = {"Identity"}, * summary = "update user by mobile", * description = "update user by token which must be set in header", * @OA\RequestBody( * required = true, * @OA\JsonContent( * type = "object", * required = {"name","province_id","city_id"}, * @OA\Property( * property = "name", * type = "string" * ), * @OA\Property( * property = "province_id", * type = "integer" * ), * @OA\Property( * property = "city_id", * type = "integer" * ) * ), * ), * @OA\Response( * response=200, * description="success", * @OA\JsonContent() * ), * @OA\Response( * response=401, * description="invalid token", * @OA\JsonContent() * ), * @OA\Response( * response=409, * description="invalid info", * @OA\JsonContent() * ) * * ) * @param \Illuminate\Http\Request $request * @return array{code: int, response: string, status: string|mixed|\Illuminate\Http\JsonResponse} */ public function update(Request $request) { $message = [ 'required' => ':attribute وارد نشده است.', ]; $attribut = [ 'name' => 'نام و نام خانوادگی', 'province_id' => 'استان', 'city_id' => 'شهر', ]; $val = Validator::make( $request->all(), [ // 'name'=>'required', 'mobile' => 'mobile', 'province_id' => 'required|numeric', 'city_id' => 'required|numeric', // 'first_name'=>'required|numeric', // 'last_name'=>'required|numeric' ], $message, $attribut ); if ($val->fails()) { return response()->json([ 'response' => $val->errors()->first() ], 409); } else { $user = $this->checkToken($request->bearerToken()); if ($user) { $user->update([ 'first_name' => $request->input('first_name'), 'last_name' => $request->input('last_name'), 'province_id' => $request->input('province_id'), 'city_id' => $request->input('city_id'), ]); return response()->json([ 'response' => $user ], 200); } else { return response()->json([ 'response' => 'token is invalid' ], 401); } } } public function checkUserVip(Request $request) { $user = $this->checkToken($request->bearerToken()); if ($user) { $model = UserVip::where('user_id', $user->id)->orderBy('end_date', 'desc')->first(); if ($model && $model->end_date >= date('Y-m-d')) { return response()->json([ 'code' => 200, 'status' => 'success', 'response' => true ]); } else { return response()->json([ 'code' => 200, 'status' => 'success', 'response' => false ]); } } else { return response()->json([ 'code' => 401, 'status' => 'error', 'response' => 'توکن شما منقضی شده است' ]); } } /** * @OA\Post( * path = "/api/cutunix/users/first-or-create", * operationId = "userFirstOrCreate", * tags = {"Identity"}, * summary = "recived uuid by mobile", * description = "in this endpoint you can recived uuid by mobile", * @OA\RequestBody( * required = true, * @OA\JsonContent( * type = "object", * required = {"mobile"}, * @OA\Property( * property = "mobile", * type = "string" * ) * ), * ), * @OA\Response( * response=200, * description="success", * @OA\JsonContent() * ), * @OA\Response( * response=409, * description="invalid info", * @OA\JsonContent() * ) * * ) * @param \Illuminate\Http\Request $request * @return array{code: int, response: string, status: string|mixed|\Illuminate\Http\JsonResponse} */ public function createOrFirst(Request $request) { Validator::extend('mobile', function ($attribute, $value) { return preg_match('/^09(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])-?[0-9]{3}-?[0-9]{4}$/', FunctionController::convert($value)); }); $message = [ 'required' => ':attribute وارد نشده است.', 'mobile' => ':attribute نامعتبر می باشد.', ]; $attribut = [ 'mobile' => 'شماره همراه', ]; $val = Validator::make( $request->all(), [ 'mobile' => 'required|mobile', ], $message, $attribut ); if ($val->fails()) { return [ 'code' => 200, 'status' => 'error', 'response' => $val->errors()->first() ]; } else { $mobile = $request->mobile; $mobile = FunctionController::convert($mobile); $model = User::where('mobile', $mobile)->first(); if (!$model) { $user = User::create([ 'mobile' => $request->mobile, ]); return response()->json([ 'user' => $user ]); } if ($model && $model->uuid) { return response()->json([ 'response' => $model ]); } else { $model->uuid = Uuid::uuid4()->toString(); $model->mobile = $request->mobile; $model->save(); return response()->json([ 'mobile' => $model->mobile, 'uuid' => $model->uuid, ]); } } } /** * @OA\Post( * path = "/api/cutunix/users/auth", * operationId = "authWithUuid", * tags = {"Identity"}, * summary = "recived token by mobile and uuid", * description = "in this endpoint you can recived token by mobile and uuid", * @OA\RequestBody( * required = true, * @OA\JsonContent( * type = "object", * required = {"mobile","uuid"}, * @OA\Property( * property = "mobile", * type = "string" * ), * @OA\Property( * property = "uuid", * type = "string" * ) * ), * ), * @OA\Response( * response=200, * description="success", * @OA\JsonContent() * ), * @OA\Response( * response=409, * description="invalid info", * @OA\JsonContent() * ) * * ) * @param \Illuminate\Http\Request $request * @return array{code: int, response: string, status: string|mixed|\Illuminate\Http\JsonResponse} */ public function authWithUuid(Request $request) { Validator::extend('mobile', function ($attribute, $value) { return preg_match('/^09(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])-?[0-9]{3}-?[0-9]{4}$/', FunctionController::convert($value)); }); $message = [ 'required' => ':attribute وارد نشده است.', 'mobile' => ':attribute نامعتبر می باشد.', ]; $attribut = [ 'mobile' => 'شماره همراه', ]; $val = Validator::make( $request->all(), [ 'mobile' => 'required|mobile', 'uuid' => 'required|uuid', ], $message, $attribut ); if ($val->fails()) { return [ 'code' => 200, 'status' => 'error', 'response' => $val->errors()->first() ]; } else { $mobile = $request->mobile; $mobile = FunctionController::convert($mobile); $uuid = $request->uuid; $user = User::where('mobile', $mobile)->where('uuid', $uuid)->first(); if ($user) { $token = $this->setToken(); $user->token = $token; $user->save(); return response()->json([ 'response' => $user ]); } else { return response()->json([ 'response' => 'undefinced user with uuid' ]); } } } }
Coded With 💗 by
0x6ick Mod By V1rus_Alfa