/
home
/
corsairdevelopme
/
public_html
/
amplivo-console
/
app
/
Http
/
Controllers
/
Upload File
HOME
<?php namespace App\Http\Controllers; use App\Models\CSRNow\City; use App\Models\CSRNow\Language as CSRNowLanguage; use App\Models\CSRNow\State; use App\Models\CSRNow\User as CsrNowUser; use App\Models\Member; use App\Models\User; use App\Models\UserSetting; use App\Models\PasswordReset; use Carbon\Carbon; use Illuminate\Support\Facades\Hash; use Google2FA; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Password; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Notification; use App\Notifications\ResetPasswordNotification; use Symfony\Component\HttpFoundation\Response; class HomeController extends Controller { /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth'); } /** * Show the application dashboard. * * @return Renderable */ public function index() { return redirect('/'); } /** * Local Language Change * * @param $locale * @return RedirectResponse */ public function localeChange($locale) { $language = CSRNowLanguage::where('short_name', $locale)->where("status", 1)->first(); if ($language) { Session::put('locale', $locale); Session::put('locale_flag', $language->flag); Session::put('locale_id', $language->id); } return redirect()->back(); } /** * Change Your account when 2FA * */ public function changeYourAccount() { $user = Auth::user(); saveLog(Auth::user()->details->email . ' ( ' . $user->roles[0]->name . ' ) ', Auth::user(), [], "loggedout"); Session::flush(); Auth::logout(); return redirect('/'); } public function switchRole(Request $request) { $role = $request->role; $userRoles = Auth::user()->roles()->pluck('name')->toArray(); if (in_array($role, $userRoles)) { Session::put('login_user_role', $role); $redirect = 'admin/dashboard'; return response()->json(['success' => true, 'url' => url($redirect)]); } return response()->json(['success' => false, 'msg' => "Please select valid role."], Response::HTTP_UNAUTHORIZED); } public static function redirectAfterLogin($role) { $redirect = '/admin/dashboard'; if (request()->ajax()) { return $redirect; } return redirect($redirect); } public function sendResetPasswordLink(Request $request) { $user = User::findOrFail(basicDecrypt($request->id)); PasswordReset::where('email', $user->email)->delete(); $token = generateRandomCode(20); PasswordReset::create([ 'email' => $user->email, 'token' => Hash::make($token), ])->token; //Shorten Url $parameter = ['token' => $token, 'email' => $user->email]; $expireTime = 60; $shortKey = generateRandomUrlKey($parameter,$expireTime); $url = route('member.password.reset',$shortKey); $data = [ 'name' => $user->first_name." ".$user->last_name, 'url' => $url, ]; Notification::route('mail', $user->email)->notify(new ResetPasswordNotification($data)); Password::sendResetLink(["email" => $user->email]); return response()->json(['success' => true, 'msg' => "Password reset link sent."]); } /** * get all Languages * * @param Request $request */ public function getAllLanguages() { $languages = CSRNowLanguage::where("status", 1)->pluck('name', 'name'); return response()->json($languages); } /** * get all Pages Transalate Status * * @param Request $request */ public function getAllPageLanguages() { $translateStatus = array("Pending" => "Pending", "Approval" => "Approval", "Disapproval" => "Disapproval", "Remaining" => "Remaining"); return response()->json($translateStatus); } public function preferenceUpdate(Request $request) { if (readOnlyMode()) { return response()->json([ 'status' => false, 'msg' => __('Feature disabled whilst in switched user mode.'), ], Response::HTTP_FORBIDDEN); } $preference = "Right"; if ($request->preference == 'true') { $preference = "Left"; } UserSetting::updateOrCreate(['user_id' => Auth::user()->id],['preference' => $preference]); return response()->json(['success' => true, 'message' => 'Preferences updated successfully']); } public function GetState(Request $request) { $options = "<option value='' selected>Select Region / State / Province</option>"; $select_option = $request->selected_id; $query = State::query(); if ($request->country_id){ $query->where('country_id',$request->country_id); } $data = $query->orderby('name','ASC')->get(); $count =$query->count(); if (!empty($data)){ foreach ($data as $row) { $selected = ($select_option == $row->id) ? 'selected' : ''; $options .= "<option value='" . $row->id . "' $selected >" . $row->name . "</option>"; } } return response()->json(['success' => true,'html' => $options,'count'=>$count]); } public function GetCity(Request $request) { $options = "<option value='' selected>Select City</option>"; $select_option = $request->selected_id; $query = City::query(); if ($request->state_id){ $query->where('state_id',$request->state_id); } $data = $query->orderby('name','ASC')->get(); if (!empty($data)){ foreach ($data as $row) { $selected = ($select_option == $row->id) ? 'selected' : ''; $options .= "<option value='" . $row->id . "' $selected >" . $row->name . "</option>"; } } return response()->json(['success' => true,'html' => $options]); } public function headerMenuSearch(Request $request) { $query = $request->term; if ($query) { $externalId = CsrNowUser::where("username", 'LIKE', '%' . trim($query) . '%') ->orWhere("email", 'LIKE', '%' . trim($query) . '%') ->pluck('id'); $userId = User::whereIntegerInRaw('external_id',$externalId)->pluck('id'); $items = Member::with('user')->whereIntegerInRaw('user_id',$userId); $items = $items->get(); $data = []; foreach ($items as $key => $item) { $data[$key]['id'] = basicEncrypt($item->member_id); $data[$key]['text'] = $item->user->details->username." (".$item->user->details->email.")"; } } else { $data = []; } return response()->json(['items' => $data]); } public function headerDateTime(Request $request) { $timeZone = Auth::user()->setting->timezone ?? 'UTC'; $now = Carbon::now($timeZone); $formatted = $now->format('h:i A | d-M-Y'); return response()->json(['status' => 'success','html' => $formatted]); } public function supportTicket() { $email = Auth::user()->details->email; $encryptedEmail = $this->encrypt($email, 'direct-login'); $base64Email = base64_encode($encryptedEmail); $url = config('amplivo.admin_support_login_url').'/direct-login?email='. urlencode($base64Email); // Redirect to the second project return redirect()->away($url); } public function switchToCSRNow() { $email = Auth::user()->details->email; $encryptedEmail = $this->encrypt($email, 'direct-login'); $base64Email = base64_encode($encryptedEmail); $url = config('csrnow.admin_url').'/direct-login?email='. urlencode($base64Email); // Redirect to the second project return redirect()->away($url); } public function switchToAcademy() { //set coockie storeUuidNumber(); $url = config('app.academy_login_url'); return redirect()->away($url); } private function encrypt($data, $key) { $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv); return $iv . $encrypted; } }