Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
WIKIPEDIA
/
imaliapi
/
app
/
Http
/
Controllers
:
BusinessController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers; use App\BusinessLogin; use App\Imali\BusinessAccount; use App\Store; use App\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Route; use Illuminate\Validation\Rule; use Laravel\Passport\Client; class BusinessController extends Controller { private $client; public function __construct() { $this->client = Client::find(27); } public function login(Request $request) { $this->validate($request, [ 'username' => 'required', 'password' => 'required' ], [ 'username.required' => 'O Campo username é Obrigatório', 'password.required' => 'O Campo Senha é Obrigatório', ]); $params = [ 'grant_type' => 'password', 'client_id' => $this->client->id, 'client_secret' => $this->client->secret, 'username' => request('username'), 'password' => request('password'), 'provider' => 'users', 'scope' => '*' ]; // return $request->username . ' ' . $request->password . ' ' . $params['client_id']; $request->request->add($params); Config::set('auth.guards.business-api.provider', $params['provider']); $proxy = Request::create('oauth/token', 'POST'); return Route::dispatch($proxy); } // Get Authenticated User public function getUserBKP() { return response()->json(User::getUserAccount()); } // Get Authenticated User public function getUser() { $user_business = auth()->user(); $user_business['business'] = BusinessAccount::find($user_business->business_accounts_id); $user_business['user'] = User::find($user_business->user_id); return response()->json($user_business); } // todo 20/10/2025 public function changePassword(Request $request) { $this->validate( $request, [ 'new_password' => ['required', 'min:8', 'confirmed'], 'new_password_confirmation' => 'required|min:8', 'name' => 'required', 'last_name' => 'required', 'email' => 'required', 'username' => 'required|string|unique:business_logins,username', ], [ 'new_password.required' => 'O Campo Nova Senha é Obrigatório', 'new_password_confirmation.required' => 'O Campo Confirmar Senha é Obrigatório', 'new_password.confirmed' => 'Senhas incompatíveis', 'new_password.min' => 'A senha deve ter 8 digitos no mínimo', 'new_password_confirmation.min' => 'A senha deve ter 8 digitos no mínimo', 'name.required' => 'O Campo Name é Obrigatório', 'last_name.required' => 'O Campo Last_name é Obrigatório', 'email.required' => 'O Campo email é Obrigatório', 'username.required' => 'O Campo username é Obrigatório', 'username.unique' => 'Este nome de utilizador já está em uso.', ] ); if (Hash::check($request->new_password, $request->user()->password)) { return response()->json(['message' => 'Não deve usar a senha anterior'], 400); } else { // $request->user()->update([ // 'password' => bcrypt($request->new_password), // 'session_status' => 1 // ]); $user_id = auth()->user()->id; $business_login = BusinessLogin::find($user_id); if (!$business_login) return response()->json(['message' => 'Utilizador não autorizado'], 400); $business_login->password = Hash::make($request->new_password); $business_login->session_status = 1; $business_login->name = $request->name; $business_login->username = $request->username; $business_login->last_name = $request->last_name; $business_login->email = $request->email; $business_login->save(); return response()->json(['message' => 'Senha Actualizada Com Sucesso!'], 200); } } public function changePasswordIDEA(Request $request) { $user = auth()->user(); if (!$user) { return response()->json(['message' => 'Utilizador não autorizado'], 401); } // Validação condicional $rules = []; $messages = []; // Se a senha estiver sendo alterada if ($request->filled('new_password') || $request->filled('new_password_confirmation')) { $rules['new_password'] = ['required', 'min:8', 'confirmed']; $rules['new_password_confirmation'] = ['required', 'min:8']; $messages = array_merge($messages, [ 'new_password.required' => 'O Campo Nova Senha é Obrigatório', 'new_password.min' => 'A senha deve ter 8 dígitos no mínimo', 'new_password.confirmed' => 'Senhas incompatíveis', 'new_password_confirmation.required' => 'O Campo Confirmar Senha é Obrigatório', 'new_password_confirmation.min' => 'A senha deve ter 8 dígitos no mínimo', ]); } // Se o nome estiver sendo alterado if ($request->filled('name')) { $rules['name'] = 'required|string'; $messages['name.required'] = 'O Campo Nome é Obrigatório'; } // Se o último nome estiver sendo alterado if ($request->filled('last_name')) { $rules['last_name'] = 'required|string'; $messages['last_name.required'] = 'O Campo Apelido é Obrigatório'; } // Se o e-mail estiver sendo alterado if ($request->filled('email')) { $rules['email'] = 'required|email'; $messages['email.required'] = 'O Campo Email é Obrigatório'; } // Se o username estiver sendo alterado if ($request->filled('username')) { $rules['username'] = [ 'required', 'string', Rule::unique('business_logins', 'username')->ignore($user->id) ]; $messages['username.required'] = 'O Campo Username é Obrigatório'; $messages['username.unique'] = 'Este nome de utilizador já está em uso.'; } // Caso nenhum campo seja enviado if (empty($rules)) { return response()->json(['message' => 'Nenhuma alteração detectada.'], 400); } // Validar apenas os campos enviados $validated = $request->validate($rules, $messages); $business_login = \App\BusinessLogin::find($user->id); // return $business_login; if (!$business_login) { return response()->json(['message' => 'Utilizador não autorizado'], 401); } // Atualizar apenas os campos presentes no request foreach ($validated as $key => $value) { if ($key === 'new_password' || $key === 'new_password_confirmation') continue; $business_login->$key = $value; } // Se o utilizador quiser alterar a senha if ($request->filled('new_password')) { if (Hash::check($request->new_password, $business_login->password)) { return response()->json(['message' => 'Não deve usar a senha anterior'], 400); Log::warning("Conta business de ID: {$business_login->name}, Last Name: {$business_login->last_name}, Email:{$business_login->email} reutilizou a senha anterior."); } $business_login->password = Hash::make($request->new_password); $business_login->session_status = 1; } $business_login->save(); return response()->json(['message' => 'Alterações salvas com sucesso!'], 200); } // LOJAS CONTA EMPRESA public function getAllStores(Request $request) { // $profile = User::getUserDetails(auth()->user()->id)->profile; // $u1 = BusinessLogin::find(auth()->user()->id); // if (!$u1) return ['data' => []]; // $business = BusinessAccount::find($u1->business_accounts_id); // if (!$business) return ['data' => []]; $user = User::getUserDetails(auth()->user()->user_id)->account_id; $perPage = !!$request->input('per_page') ? $request->input('per_page') : 10; $orderType = $request->input('order_type') === 'ASC' ? 'ASC' : 'DESC'; $orderBy = !!$request->input('order_by') && $request->input('order_by') !== 'null' ? $request->input('order_by') : 'stores.id'; $stores = Store::query() // ->join('users', 'users.id', '=', 'stores.user_id') ->join('ramo_activities', 'ramo_activities.id', '=', 'stores.industry_activity') ->join('merchant_contracts', 'stores.merchant_contract_id', '=', 'merchant_contracts.id') ->select( 'stores.*', 'ramo_activities.nome as industry', 'merchant_contracts.id as merchant_contract_id', 'merchant_contracts.taxa', 'merchant_contracts.max_balance', 'merchant_contracts.nr_transaction', 'merchant_contracts.min_amount', 'merchant_contracts.max_amount', 'merchant_contracts.use_point_limit', 'stores.name as store_name', 'stores.id as id_store' ) // ->where('users.profile', $profile) ->where('stores.business_account_id', $user) ->orderBy($orderBy, $orderType) ->paginate($perPage); return response()->json(['data' => $stores], 200); } }