Quellcode durchsuchen

add backend auth web route & Controller

Yong vor 2 Jahren
Ursprung
Commit
b7b9545685

+ 47
- 0
app/Http/Controllers/Backend/AuthController.php Datei anzeigen

@@ -0,0 +1,47 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers\Backend;
4
+
5
+use App\Models\User;
6
+use Illuminate\Http\Request;
7
+use Illuminate\Http\Response;
8
+use App\Http\Controllers\Controller;
9
+use Illuminate\Support\Facades\Auth;
10
+use Illuminate\Support\Facades\Hash;
11
+use App\Http\Requests\Backend\Auth\LoginRequest;
12
+
13
+class AuthController extends Controller
14
+{
15
+    public function index()
16
+    {
17
+        return view('auth.login');
18
+    }
19
+
20
+    public function login(LoginRequest $request)
21
+    {
22
+        $user = User::where('email', $request->email)->first();
23
+
24
+        if (is_null($user)) {
25
+            abort(Response::HTTP_NOT_FOUND, config('response-message.login_failed'));
26
+        }
27
+
28
+        if (!Hash::check($request->password, $user->password)) {
29
+            abort(Response::HTTP_NOT_FOUND, config('response-message.login_failed'));
30
+        }
31
+
32
+        Auth::login($user);
33
+
34
+        return redirect()->route('backend.dashboard');
35
+    }
36
+
37
+    public function logout(Request $request)
38
+    {
39
+        Auth::logout();
40
+
41
+        $request->session()->invalidate();
42
+
43
+        $request->session()->regenerateToken();
44
+
45
+        return redirect()->route('login.index');
46
+    }
47
+}

+ 13
- 0
app/Http/Controllers/Backend/DashboardController.php Datei anzeigen

@@ -0,0 +1,13 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers\Backend;
4
+
5
+use App\Http\Controllers\Controller;
6
+
7
+class DashboardController extends Controller
8
+{
9
+    public function __invoke()
10
+    {
11
+        return view('admin.index');
12
+    }
13
+}

+ 92
- 0
app/Http/Controllers/Backend/FunmenusController.php Datei anzeigen

@@ -0,0 +1,92 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers\Backend;
4
+
5
+use Session;
6
+use Redirect;
7
+use Validator;
8
+use App\Models\FunMenu;
9
+use Illuminate\Http\Request;
10
+use App\Models\FunMenuDetail;
11
+use App\Http\Controllers\Controller;
12
+
13
+class FunmenusController extends Controller
14
+{
15
+    public function index()
16
+    {
17
+        $tables = FunMenu::All();
18
+
19
+        return view('admin.funmenus', [
20
+            'tables' => $tables,
21
+        ]);
22
+    }
23
+
24
+    public function create()
25
+    {
26
+        return view('admin.funmenusedit', [
27
+            'datas' => "",
28
+        ]);
29
+    }
30
+
31
+    public function edit($id)
32
+    {
33
+        $datas = FunMenu::find($id);
34
+        return view('admin.funmenusedit', [
35
+            'datas' => $datas,
36
+        ]);
37
+    }
38
+
39
+    public function store(Request $request)
40
+    {
41
+        $validator = Validator::make($request->all(), [
42
+            'MenuName' => 'required|max:255',
43
+            'Corder' => 'required'
44
+
45
+        ]);
46
+        if ($validator->fails()) {
47
+            return Redirect::back()
48
+                ->withErrors($validator);
49
+        } else {
50
+            if ($request->mode == "insert") {
51
+                $funmenu = new FunMenu;
52
+                $funmenu->icon = $request->icon;
53
+                $funmenu->MenuName = $request->MenuName;
54
+                $funmenu->Valid = ($request->Valid == "on") ? 1 : 0;
55
+                $funmenu->Corder = $request->Corder;
56
+                $funmenu->Oid = $request->user()->id;
57
+                $funmenu->save();
58
+            } else {
59
+                $funmenu = FunMenu::find($request->id);
60
+                $funmenu->icon = $request->icon;
61
+                $funmenu->MenuName = $request->MenuName;
62
+                $funmenu->Valid = ($request->Valid == "on") ? 1 : 0;
63
+                $funmenu->Corder = $request->Corder;
64
+                $funmenu->Oid = $request->user()->id;
65
+                $funmenu->save();
66
+            }
67
+        }
68
+
69
+        return Redirect::back();
70
+    }
71
+
72
+    public function delete($id)
73
+    {
74
+        if ($id == 1) {
75
+            Session::flash('msg', 'This can not be delete!!');
76
+        } else {
77
+            $funmenudetails = FunMenuDetail::where('FunMenuId', '=', $id);
78
+
79
+            if ($funmenudetails->count() > 0) {
80
+                Session::flash('msg', 'Must delete functions first!!');
81
+            } else {
82
+                $funmenu = FunMenu::find($id);
83
+                $funmenu->delete();
84
+
85
+
86
+                $funmenudetails->delete();
87
+            }
88
+        }
89
+
90
+        return Redirect::back();
91
+    }
92
+}

+ 100
- 0
app/Http/Controllers/Backend/FunmenusDetailController.php Datei anzeigen

@@ -0,0 +1,100 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers\Backend;
4
+
5
+use Session;
6
+use Redirect;
7
+use App\Models\FunMenu;
8
+use App\Models\Functions;
9
+use Illuminate\Http\Request;
10
+use App\Models\FunMenuDetail;
11
+use App\Http\Controllers\Controller;
12
+
13
+class FunmenusDetailController extends Controller
14
+{
15
+    public function index($menuid)
16
+    {
17
+        $parentname = FunMenu::select('MenuName')->where('id', '=', $menuid)->get();
18
+        $funmenus = FunMenuDetail::select('FunId')->where('FunMenuId', '=', $menuid)->get();
19
+        $tables = Functions::whereIn('id', $funmenus)->get();
20
+
21
+        return view('admin.funmenusdetail', [
22
+            'parentname' => $parentname,
23
+            'tables' => $tables,
24
+            'id' => $menuid,
25
+        ]);
26
+    }
27
+
28
+    public function create($menuid)
29
+    {
30
+        return view('admin.funmenusdetailedit', [
31
+            'datas' => "",
32
+            'datas2' => "",
33
+            'id' => $menuid,
34
+        ]);
35
+    }
36
+
37
+    public function edit($menuid, $id)
38
+    {
39
+        $datas = Functions::find($id);
40
+        $datas2 = FunMenuDetail::select('id', 'Corder')->where('FunMenuId', '=', $menuid)->where('FunId', '=', $id)->get();
41
+
42
+        return view('admin.funmenusdetailedit', [
43
+            'datas' => $datas,
44
+            'datas2' => $datas2[0],
45
+            'id' => $menuid,
46
+        ]);
47
+    }
48
+
49
+    public function store(Request $request, $menuid)
50
+    {
51
+        if ($request->mode == "insert") {
52
+            $function = new Functions;
53
+            $function->FunName = $request->FunName;
54
+            $function->FunLink = $request->FunLink;
55
+            $function->FunDesc = $request->FunDesc;
56
+            $function->Valid = ($request->Valid == "on") ? 1 : 0;
57
+            $function->Oid = $request->user()->id;
58
+            $function->save();
59
+
60
+            $functiondetail = new FunMenuDetail;
61
+            $functiondetail->FunMenuId = $menuid;
62
+            $functiondetail->FunId = $function->id;
63
+            $functiondetail->Valid = ($request->Valid == "on") ? 1 : 0;
64
+            $functiondetail->Corder = $request->Corder;
65
+            $functiondetail->Oid = $request->user()->id;
66
+            $functiondetail->save();
67
+        } else {
68
+            $function = Functions::find($request->id);
69
+            $function->FunName = $request->FunName;
70
+            $function->FunLink = $request->FunLink;
71
+            $function->FunDesc = $request->FunDesc;
72
+            $function->Valid = ($request->Valid == "on") ? 1 : 0;
73
+            $function->Oid = $request->user()->id;
74
+            $function->save();
75
+
76
+            $functiondetail = FunMenuDetail::find($request->detailid);
77
+            $functiondetail->Valid = ($request->Valid == "on") ? 1 : 0;
78
+            $functiondetail->Corder = $request->Corder;
79
+            $functiondetail->Oid = $request->user()->id;
80
+            $functiondetail->save();
81
+        }
82
+
83
+        return Redirect::back();
84
+    }
85
+
86
+    public function delete($menuid, $id)
87
+    {
88
+        if ($menuid == 1) {
89
+            Session::flash('msg', 'This can not be delete!!');
90
+        } else {
91
+            $function = Functions::find($id);
92
+            $function->delete();
93
+
94
+            $funmenudetail = FunMenuDetail::where('FunId', '=', $id);
95
+            $funmenudetail->delete();
96
+        }
97
+
98
+        return Redirect::back();
99
+    }
100
+}

+ 31
- 0
app/Http/Controllers/Backend/PasswordController.php Datei anzeigen

@@ -0,0 +1,31 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers\Backend;
4
+
5
+use App\Models\User;
6
+use Illuminate\Http\Request;
7
+use App\Http\Controllers\Controller;
8
+use Illuminate\Support\Facades\Session;
9
+
10
+class PasswordController extends Controller
11
+{
12
+    public function index()
13
+    {
14
+        return view('admin.password');
15
+    }
16
+
17
+    public function update(Request $request)
18
+    {
19
+        $this->validate($request, [
20
+            'qpwd1' => 'required|max:255',
21
+        ]);
22
+
23
+        $user = User::find($request->user()->id);
24
+        $user->password = bcrypt($request->qpwd1);
25
+        $user->save();
26
+
27
+        Session::flash('msg', 'Update Success!');
28
+
29
+        return redirect()->back();
30
+    }
31
+}

+ 111
- 0
app/Http/Controllers/Backend/UsergroupsController.php Datei anzeigen

@@ -0,0 +1,111 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers\Backend;
4
+
5
+use Illuminate\Http\Request;
6
+
7
+use App\Models\FunMenu;
8
+use App\Models\FunUserGroups;
9
+use App\Http\Controllers\Controller;
10
+use Redirect;
11
+
12
+class UsergroupsController extends Controller
13
+{
14
+    public function index()
15
+    {
16
+        $tables = FunUserGroups::all();
17
+
18
+        return view('admin.usergroups', [
19
+            'tables' => $tables,
20
+        ]);
21
+    }
22
+
23
+    public function delete(Request $request, FunUserGroups $id)
24
+    {
25
+        if ($id->id == 1) {
26
+            return Redirect::back()->withErrors("Admin group can not be delete!");
27
+        } else {
28
+            $id->delete();
29
+        }
30
+        return Redirect::back();
31
+    }
32
+
33
+    public function create(Request $request)
34
+    {
35
+        $user_name = $request->user()->name;
36
+        $user_id = $request->user()->id;
37
+
38
+        $funmenu = new FunMenu;
39
+        $result = $funmenu->leftmenu($user_id);
40
+
41
+        $usergroup = new FunUserGroups;
42
+        $seleted_usrlist = $usergroup->selectedUsrList(9999);
43
+        $unseleted_usrlist = $usergroup->unseletedUsrList(9999);
44
+        $seleted_funlist = $usergroup->seletedFunList(9999);
45
+        $unseleted_funlist = $usergroup->unseletedFunList(9999);
46
+
47
+        return view('admin.usergroupsedit', [
48
+            'leftmenu' => $result,
49
+            'username' => $user_name,
50
+            'seleted_usrlist' => $seleted_usrlist,
51
+            'unseleted_usrlist' => $unseleted_usrlist,
52
+            'seleted_funlist' => $seleted_funlist,
53
+            'unseleted_funlist' => $unseleted_funlist,
54
+            'operdata' => "",
55
+
56
+        ]);
57
+    }
58
+
59
+    public function edit(Request $request, $id)
60
+    {
61
+        $user_name = $request->user()->name;
62
+        $user_id = $request->user()->id;
63
+        $fun_id = $id;
64
+
65
+        $funmenu = new FunMenu;
66
+        $result = $funmenu->leftmenu($user_id);
67
+
68
+        $usergroup = new FunUserGroups;
69
+        $seleted_usrlist = $usergroup->selectedUsrList($fun_id);
70
+        $unseleted_usrlist = $usergroup->unseletedUsrList($fun_id);
71
+        $seleted_funlist = $usergroup->seletedFunList($fun_id);
72
+        $unseleted_funlist = $usergroup->unseletedFunList($fun_id);
73
+        $operdata = $usergroup->operData($fun_id);
74
+
75
+        return view('admin.usergroupsedit', [
76
+            'leftmenu' => $result,
77
+            'username' => $user_name,
78
+            'seleted_usrlist' => $seleted_usrlist,
79
+            'unseleted_usrlist' => $unseleted_usrlist,
80
+            'seleted_funlist' => $seleted_funlist,
81
+            'unseleted_funlist' => $unseleted_funlist,
82
+            'operdata' => $operdata,
83
+
84
+        ]);
85
+    }
86
+
87
+    public function store(Request $request)
88
+    {
89
+        if ($request->mode == "insert") {
90
+            $usergroup = new FunUserGroups;
91
+            $usergroup->Name = $request->Name;
92
+            $usergroup->FunList = $request->hidfunlist;
93
+            $usergroup->UsrList = $request->hidusrlist;
94
+            $usergroup->Valid = ($request->Valid == "on") ? 1 : 0;
95
+            $usergroup->Oid = $request->user()->id;
96
+            $usergroup->save();
97
+
98
+            return redirect('/backend/Usergroups');
99
+        } else {
100
+            $usergroup = FunUserGroups::find($request->id);
101
+            $usergroup->Name = $request->Name;
102
+            $usergroup->FunList = $request->hidfunlist;
103
+            $usergroup->UsrList = $request->hidusrlist;
104
+            $usergroup->Valid = ($request->Valid == "on") ? 1 : 0;
105
+            $usergroup->Oid = $request->user()->id;
106
+            $usergroup->save();
107
+
108
+            return redirect('/backend/Usergroups');
109
+        }
110
+    }
111
+}

+ 73
- 0
app/Http/Controllers/Backend/UsersController.php Datei anzeigen

@@ -0,0 +1,73 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers\Backend;
4
+
5
+use Redirect;
6
+use App\Models\User;
7
+use Illuminate\Http\Request;
8
+use App\Http\Controllers\Controller;
9
+
10
+class UsersController extends Controller
11
+{
12
+    public function index()
13
+    {
14
+        $tables = User::all();
15
+
16
+        return view('admin.users', [
17
+            'tables' => $tables,
18
+        ]);
19
+    }
20
+
21
+    public function create(Request $request)
22
+    {
23
+        return view('admin.usersedit', [
24
+            'operdata' => "",
25
+        ]);
26
+    }
27
+
28
+    public function edit($id)
29
+    {
30
+        $usr_id = $id;
31
+        $operdata = User::find($usr_id);
32
+
33
+        return view('admin.usersedit', [
34
+            'operdata' => $operdata,
35
+        ]);
36
+    }
37
+
38
+    public function store(Request $request)
39
+    {
40
+        //$role = \App\Role::where('name', 'admin')->first();
41
+
42
+        if ($request->mode == "insert") {
43
+            $user = new User;
44
+            $user->name = $request->name;
45
+            $user->email = $request->email;
46
+            $user->password = bcrypt($request->password);
47
+            $user->save();
48
+
49
+            //$user->attachRole($role);
50
+            return redirect('/backend/Users');
51
+        } else {
52
+            $user = User::find($request->id);
53
+            $user->name = $request->name;
54
+            if ($request->password != "") {
55
+                $user->password = bcrypt($request->password);
56
+            }
57
+            $user->save();
58
+
59
+            return redirect('/backend/Users');
60
+        }
61
+    }
62
+
63
+    public function delete(Request $request, User $id)
64
+    {
65
+        if ($id->email == "admin@gmail.com") {
66
+            return Redirect::back()->withErrors("Administrator can not be delete!");
67
+        } else {
68
+            $id->delete();
69
+        }
70
+
71
+        return Redirect::back();
72
+    }
73
+}

+ 76
- 15
routes/web.php Datei anzeigen

@@ -1,18 +1,79 @@
1 1
 <?php
2 2
 
3
-use Illuminate\Support\Facades\Route;
4
-
5
-/*
6
-|--------------------------------------------------------------------------
7
-| Web Routes
8
-|--------------------------------------------------------------------------
9
-|
10
-| Here is where you can register web routes for your application. These
11
-| routes are loaded by the RouteServiceProvider within a group which
12
-| contains the "web" middleware group. Now create something great!
13
-|
14
-*/
15
-
16
-Route::get('/', function () {
17
-    return view('welcome');
3
+use App\Http\Controllers\Backend\AuthController;
4
+use App\Http\Controllers\Backend\UsersController;
5
+use App\Http\Controllers\Backend\FunmenusController;
6
+use App\Http\Controllers\Backend\PasswordController;
7
+use App\Http\Controllers\Backend\DashboardController;
8
+use App\Http\Controllers\Backend\UsergroupsController;
9
+use App\Http\Controllers\Backend\FunmenusDetailController;
10
+
11
+// Fow AWS ELB 健康檢查
12
+Route::get('/health-check', function () {
13
+    return response('healthy');
14
+});
15
+
16
+Route::prefix('backend')->group(function () {
17
+    Route::redirect('/', '/backend/login');
18
+
19
+    // Authentication
20
+    Route::get('/login', [AuthController::class, 'index'])
21
+        ->middleware(['guest:web'])
22
+        ->name('login.index');
23
+
24
+    Route::post('/login', [AuthController::class, 'login'])
25
+        ->middleware([
26
+            'guest:web',
27
+            // 'throttle:login'
28
+        ])->name('login');
29
+
30
+    Route::middleware(['auth'])->group(function () {
31
+
32
+        Route::get('/dashboard', DashboardController::class)->name('backend.dashboard');
33
+
34
+        Route::post('/logout', [AuthController::class, 'logout'])
35
+            ->name('logout');
36
+
37
+        // System ManagementChange Password
38
+        Route::controller(PasswordController::class)->prefix('Password')->group(function () {
39
+            Route::get('/', 'index');
40
+            Route::post('/', 'update');
41
+        });
42
+
43
+        // System ManagementManage Groups
44
+        Route::controller(UsergroupsController::class)->prefix('Usergroups')->group(function () {
45
+            Route::get('/', 'index');
46
+            Route::get('/create', 'create');
47
+            Route::get('/edit/{id}', 'edit');
48
+            Route::post('/store', 'store');
49
+            Route::delete('/{id}', 'delete');
50
+        });
51
+
52
+        // System ManagementManage Users
53
+        Route::controller(UsersController::class)->prefix('Users')->group(function () {
54
+            Route::get('/', 'index');
55
+            Route::get('/create', 'create');
56
+            Route::get('/edit/{id}', 'edit');
57
+            Route::post('/store', 'store');
58
+            Route::delete('/{id}', 'delete');
59
+        });
60
+
61
+        // System ManagementManage Functions
62
+        Route::controller(FunmenusController::class)->prefix('Funmenus')->group(function () {
63
+            Route::get('/', 'index');
64
+            Route::get('/create', 'create');
65
+            Route::get('/edit/{id}', 'edit');
66
+            Route::post('/store', 'store');
67
+            Route::delete('/{id}', 'delete');
68
+        });
69
+
70
+        // System ManagementManage Functions Detail
71
+        Route::controller(FunmenusDetailController::class)->prefix('Funmenus')->group(function () {
72
+            Route::get('/{menuid}', 'index');
73
+            Route::get('/{menuid}/create', 'create');
74
+            Route::get('/{menuid}/edit/{id}', 'edit');
75
+            Route::post('/{menuid}/store', 'store');
76
+            Route::delete('/{menuid}/delete/{id}', 'delete');
77
+        });
78
+    });
18 79
 });