Viewing file: AuthController.php (5.51 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Models\Admin\Tenant; use App\Models\Plan; use App\Models\Setting; use App\Models\Admin\TenantPlan; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str;
class AuthController extends Controller { public function login() { return view('admin.auth.login'); }
public function authenticate(Request $request) { $request->validate([ 'email'=>'required|email', 'password'=>'required' ]);
$remember_me=isset($request->remember_me)?true:false;
$isAuth=auth('admin')->attempt($request->only('email','password'),$remember_me); if($isAuth){ return redirect()->route('admin.dashboard'); }
return redirect()->back()->withErrors(['msg'=>'Invalid email or password'])->withInput();
}
public function registration() { return view('admin.auth.registration'); }
public function createTenant() { $tenant = Tenant::create([ 'plan' => 'free', ]);
$tenant->domains()->create([ 'domain' => 'foo.localhost', ]);
$tenant->run(function (Tenant $t){ $storage_path = storage_path(); mkdir("$storage_path/framework/cache", 0777, true); Artisan::call("tenants:seed --tenants=".$t->id); Artisan::call("passport:keys"); });
dd("created"); }
public function logout(){ auth('admin')->logout(); return redirect()->route('admin.login')->with('success','Logout successfully'); }
public function getSubDomain($storeName) { $username = Str::slug($storeName,''); $userRows = DB::table('domains')->select('id')->where("domain","REGEXP","^$username([0-9]*)?")->get(); $countUser = count($userRows) + 1; return ($countUser > 1) ? "{$username}{$countUser}" : $username; }
public function store(Request $request){ $request->validate([ 'store_name'=>'required', 'email'=>'required', 'password'=>'required', ]); $plan=Plan::first(); $host=parse_url(env('APP_URL'))['host']; $subDomain = $this->getSubDomain($request->store_name); $domain = "{$subDomain}.{$host}";
\DB::transaction(function () use ($request, $plan,$domain,$subDomain) {
$tenant = Tenant::create([ 'plan' => '' . $plan->id, 'store_name' => $request->store_name, 'email' => $request->email, ]);
$expired_date=null; if($plan->recurring_type=='monthly'){ $expired_date= now()->addMonth(); }elseif ($plan->recurring_type=='semiyearly'){ $expired_date= now()->addMonths(6); }elseif ($plan->recurring_type=='yearly'){ $expired_date= now()->addYear(); }
$tenantPlan = new TenantPlan(); $tenantPlan->tenant_id = $tenant->id; $tenantPlan->plan_id = $plan->id; $tenantPlan->start_date = now(); $tenantPlan->expired_date =$expired_date; $tenantPlan->cost = $plan->cost; $tenantPlan->sms_limit = $plan->sms_limit; $tenantPlan->payment_status = 'unpaid'; $tenantPlan->save();
$tenant->domains()->create([ 'domain' => $domain, ]); $request['sub_domain'] = $subDomain;
$tenant->run(function (Tenant $t) use ($request) { $storage_path = storage_path(); mkdir("$storage_path/framework/cache", 0777, true); Artisan::call("tenants:seed --tenants=" . $t->id); Artisan::call("passport:keys"); $storeName = explode(' ', strtolower($request->store_name)); $firstName = $storeName[0]; unset($storeName[0]); $lastName = implode(' ', $storeName); DB::statement("SET FOREIGN_KEY_CHECKS=0;"); User::truncate(); User::insert( array( 'id' => 1, 'firstname' => $firstName, 'lastname' => $lastName, 'username' => $request->sub_domain, 'email' => $request->email, 'password' => bcrypt($request->password), 'avatar' => 'no_avatar.png', 'phone' => '', 'role_id' => 1, 'statut' => 1, 'is_all_warehouses' => 1, ) ); Setting::where('id', 1)->update(['tenant_id' => $t->id]); DB::statement("SET FOREIGN_KEY_CHECKS=1;"); }); }); return redirect()->to('/login')->domain($domain); }
public function profileEdit(){ $data['user']=auth('admin')->user(); return view('admin.profile',$data); }
public function profileUpdate(Request $request){ $request->validate([ 'name'=>'required', 'email'=>'required', 'password'=>'required', ]); $user=auth('admin')->user(); $user->update($request->only('name','email','password'));
return redirect()->back()->with('success','Profile Updated Successfully'); } }
|