Browse Source

admin section

Shah Rakibur Rahaman 2 years ago
parent
commit
0c686488b6

+ 53 - 0
app/Http/Controllers/AdminAuth/ForgotPasswordController.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Http\Controllers\AdminAuth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
+use Illuminate\Support\Facades\Password;
+
+class ForgotPasswordController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reset Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling password reset emails and
+    | includes a trait which assists in sending these notifications from
+    | your application to your users. Feel free to explore this trait.
+    |
+    */
+
+    use SendsPasswordResetEmails;
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('admin.guest');
+    }
+
+    /**
+     * Display the form to request a password reset link.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showLinkRequestForm()
+    {
+        return view('admin.auth.passwords.email');
+    }
+
+    /**
+     * Get the broker to be used during password reset.
+     *
+     * @return \Illuminate\Contracts\Auth\PasswordBroker
+     */
+    public function broker()
+    {
+        return Password::broker('admins');
+    }
+}

+ 177 - 0
app/Http/Controllers/AdminAuth/LoginController.php

@@ -0,0 +1,177 @@
+<?php
+
+namespace App\Http\Controllers\AdminAuth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\AuthenticatesUsers;
+use Illuminate\Support\Facades\Auth;
+use Hesto\MultiAuth\Traits\LogsoutGuard;
+use Illuminate\Http\Request;
+
+use App\Models\Admin;
+use App\Models\LoginRecords;
+use Session;
+
+class LoginController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Login Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles authenticating users for the application and
+    | redirecting them to your home screen. The controller uses a trait
+    | to conveniently provide its functionality to your applications.
+    |
+    */
+
+    use AuthenticatesUsers, LogsoutGuard {
+        LogsoutGuard::logout insteadof AuthenticatesUsers;
+    }
+
+    /**
+     * Where to redirect users after login / registration.
+     *
+     * @var string
+     */
+    public $redirectTo = '/admin/dashboard';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('admin.guest', ['except' => 'logout']);
+    }
+
+    /**
+     * Show the application's login form.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showLoginForm()
+    {
+        return view('admin.auth.login');
+    }
+
+    public function login(Request $request)
+    {
+        $admin = Admin::where('email',$request->email)->first();
+        if(!$admin){
+            return redirect('/')->with('error','Unknown Email address!');
+        }else{
+            if($admin->status == '0'){
+                return redirect('/')->with('error','Account Status is not Activated!');
+
+            }else{
+
+
+                if($admin->type==5)
+                    return redirect('https://sales.samscrm.co.uk')->with('success','Please login here!');
+
+                
+                $credentials = [
+                    'email' => $request->email,
+                    'password' => $request->password,
+                    'status' => '1'
+                ];
+
+                if (Auth::guard('admin')->attempt($credentials)) {
+                    $time = date('y-m-d h:i:s',time());
+                    $ip = $request->ip();
+
+                    $records = new LoginRecords;
+                    $records->auth_type = 'admins';
+                    $records->auth_id = $admin->id;
+                    $records->ip_address = $ip;
+                    $records->start_time = $time;
+                    $records->save();
+
+                    $admin->active_status=1;
+                    $admin->last_logged_timezone=$request->last_logged_timezone;
+                    $admin->api_token=make_api_token('admins');
+                    $admin->update();
+
+
+                    $previous_session = $admin->session_id;
+                    if($previous_session) {
+                        Session::getHandler()->destroy($previous_session);
+                    }
+
+
+
+                    Session::put('session_start', $time);
+                    Session::put('login_record', $records->id);
+                    Session::put('admin_type', 'admins');
+
+                    $admin->session_id = Session::getId();
+                    $admin->update();
+
+                    return redirect('admin/dashboard');
+                }else{
+                    return redirect('/')->with('error','Wrong Email/Password combination');
+                }
+            }
+        }
+    }
+
+    /**
+     * Get the guard to be used during authentication.
+     *
+     * @return \Illuminate\Contracts\Auth\StatefulGuard
+     */
+    protected function guard()
+    {
+        return Auth::guard('admin');
+    }
+
+    public function logout(){
+
+        $auth_user=Auth::guard('admin')->user(); 
+
+        if($auth_user){
+
+            $auth_user->update([
+                'active_status'=>0,
+                'api_token'=>NULL
+            ]);
+            
+        } 
+
+        if(Session::get('login_record')){
+            $record_id = Session::get('login_record');
+            $time = date('y-m-d h:i:s',time());
+            $records = LoginRecords::find($record_id);
+            if($records){
+                $records->end_time = $time;
+                $records->update();
+
+                if($records->login_source){
+                    $source = $records->loginSource->source;
+                }
+            }
+        }
+
+        $previous_session = Auth::guard('admin')->session_id;
+        if($previous_session) {
+            Session::getHandler()->destroy($previous_session);
+        }
+        Auth::guard('admin')->logout();
+
+        if(!isset($source)){
+            return redirect('/');
+        }else{
+            return redirect($source);
+        }
+        //return redirect('/admin');
+    }
+
+    public function showRegisterForm()
+    {
+        return view('admin.auth.register');
+    }
+
+    
+}

+ 92 - 0
app/Http/Controllers/AdminAuth/RegisterController.php

@@ -0,0 +1,92 @@
+<?php
+
+namespace App\Http\Controllers\AdminAuth;
+
+use App\Models\Admin;
+use Validator;
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\RegistersUsers;
+use Illuminate\Support\Facades\Auth;
+
+class RegisterController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Register Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles the registration of new users as well as their
+    | validation and creation. By default this controller uses a trait to
+    | provide this functionality without requiring any additional code.
+    |
+    */
+
+    use RegistersUsers;
+
+    /**
+     * Where to redirect users after login / registration.
+     *
+     * @var string
+     */
+    protected $redirectTo = '/admin/dashboard';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('admin.guest');
+    }
+
+    /**
+     * Get a validator for an incoming registration request.
+     *
+     * @param  array  $data
+     * @return \Illuminate\Contracts\Validation\Validator
+     */
+    protected function validator(array $data)
+    {
+        return Validator::make($data, [
+            'name' => 'required|max:255',
+            'email' => 'required|email|max:255|unique:admins',
+            'password' => 'required|min:6|confirmed',
+        ]);
+    }
+
+    /**
+     * Create a new user instance after a valid registration.
+     *
+     * @param  array  $data
+     * @return Admin
+     */
+    protected function create(array $data)
+    {
+        return Admin::create([
+            'name' => $data['name'],
+            'email' => $data['email'],
+            'password' => bcrypt($data['password']),
+        ]);
+    }
+
+    /**
+     * Show the application registration form.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showRegistrationForm()
+    {
+        return view('admin.auth.register');
+    }
+
+    /**
+     * Get the guard to be used during registration.
+     *
+     * @return \Illuminate\Contracts\Auth\StatefulGuard
+     */
+    protected function guard()
+    {
+        return Auth::guard('admin');
+    }
+}

+ 79 - 0
app/Http/Controllers/AdminAuth/ResetPasswordController.php

@@ -0,0 +1,79 @@
+<?php
+
+namespace App\Http\Controllers\AdminAuth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\ResetsPasswords;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Password;
+use Illuminate\Http\Request;
+
+class ResetPasswordController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reset Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling password reset requests
+    | and uses a simple trait to include this behavior. You're free to
+    | explore this trait and override any methods you wish to tweak.
+    |
+    */
+
+    use ResetsPasswords;
+
+    /**
+     * Where to redirect users after login / registration.
+     *
+     * @var string
+     */
+    public $redirectTo = '/admin/dashboard';
+
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('admin.guest');
+    }
+
+    /**
+     * Display the password reset view for the given token.
+     *
+     * If no token is present, display the link request form.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  string|null  $token
+     * @return \Illuminate\Http\Response
+     */
+    public function showResetForm(Request $request, $token = null)
+    {
+        return view('admin.auth.passwords.reset')->with(
+            ['token' => $token, 'email' => $request->email]
+        );
+    }
+
+    /**
+     * Get the broker to be used during password reset.
+     *
+     * @return \Illuminate\Contracts\Auth\PasswordBroker
+     */
+    public function broker()
+    {
+        return Password::broker('admins');
+    }
+
+    /**
+     * Get the guard to be used during password reset.
+     *
+     * @return \Illuminate\Contracts\Auth\StatefulGuard
+     */
+    protected function guard()
+    {
+        return Auth::guard('admin');
+    }
+}

+ 2 - 0
app/Http/Kernel.php

@@ -55,6 +55,8 @@ class Kernel extends HttpKernel
     protected $routeMiddleware = [
         'teacher' => \App\Http\Middleware\RedirectIfNotTeacher::class,
         'teacher.guest' => \App\Http\Middleware\RedirectIfTeacher::class,
+        'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
+        'admin.guest' => \App\Http\Middleware\RedirectIfAdmin::class,
         'auth' => \App\Http\Middleware\Authenticate::class,
         'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
         'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,

+ 26 - 0
app/Http/Middleware/RedirectIfAdmin.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class RedirectIfAdmin
+{
+	/**
+	 * Handle an incoming request.
+	 *
+	 * @param  \Illuminate\Http\Request  $request
+	 * @param  \Closure  $next
+	 * @param  string|null  $guard
+	 * @return mixed
+	 */
+	public function handle($request, Closure $next, $guard = 'admin')
+	{
+	    if (Auth::guard($guard)->check()) {
+	        return redirect('admin/dashboard');
+	    }
+
+	    return $next($request);
+	}
+}

+ 26 - 0
app/Http/Middleware/RedirectIfNotAdmin.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class RedirectIfNotAdmin
+{
+	/**
+	 * Handle an incoming request.
+	 *
+	 * @param  \Illuminate\Http\Request  $request
+	 * @param  \Closure  $next
+	 * @param  string|null  $guard
+	 * @return mixed
+	 */
+	public function handle($request, Closure $next, $guard = 'admin')
+	{
+	    if (!Auth::guard($guard)->check()) {
+	        return redirect('admin');
+	    }
+
+	    return $next($request);
+	}
+}