Compare commits
30 Commits
ae43bd3afe
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| 6977325bb1 | |||
| 1a565fd788 | |||
| 67969b005f | |||
| 62ce1f2068 | |||
| f682741758 | |||
| 9fd6e08400 | |||
| a130550274 | |||
| 7d48d74cb1 | |||
| e8b92eb473 | |||
| 21f7367b7e | |||
| 36fecb5d9e | |||
| a52429930e | |||
| 9216e2f157 | |||
| ddde0e25d1 | |||
| 4b9b4f1880 | |||
| 4bbed319f2 | |||
| 2a9054c9d8 | |||
| b317a26500 | |||
| c6521b2a7a | |||
| 984e851e97 | |||
| 342384599f | |||
| b7621addd3 | |||
| 15325f103c | |||
| 14a3b1571d | |||
| 5da2c5a92e | |||
| 167427381f | |||
| 4ca70a0562 | |||
| 7e9bbe282a | |||
| 552154f629 | |||
| 0d51e9db6b |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,6 +1,9 @@
|
||||
/node_modules
|
||||
/public/hot
|
||||
/public/storage
|
||||
/public/js
|
||||
/public/css
|
||||
/public/fonts
|
||||
/storage/*.key
|
||||
/vendor
|
||||
/.idea
|
||||
|
||||
42
app/Admin.php
Normal file
42
app/Admin.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Created by Reliese Model.
|
||||
* Date: Sun, 29 Jul 2018 08:54:26 +0000.
|
||||
*/
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model as Eloquent;
|
||||
|
||||
/**
|
||||
* Class Admin
|
||||
*
|
||||
* @property string $ID
|
||||
* @property string $password
|
||||
* @property string $name
|
||||
* @property string $nick_name
|
||||
* @property string $phone_number
|
||||
* @property \Carbon\Carbon $created_at
|
||||
* @property \Carbon\Carbon $updated_at
|
||||
*
|
||||
* @package App
|
||||
*/
|
||||
class Admin extends Eloquent
|
||||
{
|
||||
protected $connection = 'mysql';
|
||||
protected $table = 'admin';
|
||||
protected $primaryKey = 'ID';
|
||||
public $incrementing = false;
|
||||
|
||||
protected $hidden = [
|
||||
'password'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'password',
|
||||
'name',
|
||||
'nick_name',
|
||||
'phone_number'
|
||||
];
|
||||
}
|
||||
10
app/Exceptions/UserNotFoundException.php
Normal file
10
app/Exceptions/UserNotFoundException.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exceptions;
|
||||
|
||||
use Exception;
|
||||
|
||||
class UserNotFoundException extends Exception
|
||||
{
|
||||
//
|
||||
}
|
||||
@@ -18,7 +18,9 @@ class LoginController extends Controller
|
||||
|
|
||||
*/
|
||||
|
||||
use AuthenticatesUsers;
|
||||
use AuthenticatesUsers{
|
||||
showLoginForm as traitShowLoginForm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
@@ -36,4 +38,47 @@ class LoginController extends Controller
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the application's login form.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function showLoginForm()
|
||||
{
|
||||
// return view('auth.login');
|
||||
// return $this->traitShowLoginForm();
|
||||
return view('auth.login');
|
||||
}
|
||||
|
||||
/**
|
||||
* 顯示接案者的登入表單
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function showReceiverLoginForm()
|
||||
{
|
||||
return $this->showLoginForm();
|
||||
}
|
||||
|
||||
/**
|
||||
* 顯示發案者的登入表單
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function showCaseBuilderLoginForm()
|
||||
{
|
||||
return $this->showLoginForm();
|
||||
}
|
||||
|
||||
/**
|
||||
* 顯示網站管理者的登入表單
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function showAdminLoginForm()
|
||||
{
|
||||
return $this->showLoginForm();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
14
app/Http/Controllers/CaseBuilder/CaseBuilderController.php
Normal file
14
app/Http/Controllers/CaseBuilder/CaseBuilderController.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\CaseBuilder;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class CaseBuilderController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
return view('casebuilder.index');
|
||||
}
|
||||
}
|
||||
29
app/Http/Controllers/Home/HomeController.php
Normal file
29
app/Http/Controllers/Home/HomeController.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Home;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// $this->middleware('auth');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the application dashboard.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('home.index');
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('home.index');
|
||||
}
|
||||
}
|
||||
79
app/Http/Controllers/Receiver/ReceiverController.php
Normal file
79
app/Http/Controllers/Receiver/ReceiverController.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Receiver;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Validator;
|
||||
use App\Receiver;
|
||||
|
||||
class ReceiverController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
return view('receiver.index');
|
||||
}
|
||||
|
||||
public function manager(Request $request)
|
||||
{
|
||||
// code...
|
||||
}
|
||||
|
||||
public function about(Request $request)
|
||||
{
|
||||
// code...
|
||||
}
|
||||
|
||||
// *************************************************************************
|
||||
|
||||
public function loginProcess()
|
||||
{
|
||||
$input = request()->all();
|
||||
|
||||
//輸入資料驗證
|
||||
$rules = [
|
||||
'email'=>[
|
||||
'required',
|
||||
'email',
|
||||
],
|
||||
'password'=>[
|
||||
'required',
|
||||
'min:6'
|
||||
],
|
||||
];
|
||||
$validate = Validator::make($input,$rules);
|
||||
if($validate->fails()){
|
||||
return redirect('/receiver/login')
|
||||
->withErrors($validate)->withInput();
|
||||
}
|
||||
//驗證通過,巷資料庫查詢使用者是否存在
|
||||
$User = Receiver::where('email',$input['email'])->firstOrFail();
|
||||
$isPasswordCorrect = $input['password'] == $User->password;
|
||||
if(!$isPasswordCorrect){
|
||||
//failed -> 導向至登入畫面(附帶錯誤訊息)
|
||||
$error_msg = [
|
||||
'msg'=>['密碼錯誤']
|
||||
];
|
||||
return redirect('/receiver/login')->withErrors($error_msg)
|
||||
->withInput();
|
||||
}
|
||||
//Pass->紀錄session
|
||||
/* $record = [
|
||||
'user_id'=>$User->RID,
|
||||
'role_id'=>'Receiver'
|
||||
]; */
|
||||
//session()->put($record);
|
||||
// $binds = [
|
||||
// 'name'=>$User->nickname
|
||||
// ];
|
||||
// $name = $User->nickname;
|
||||
session()->put('user_id',$User->RID);
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
public function logout()
|
||||
{
|
||||
session()->forget('user_id');
|
||||
return redirect('/');
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -13,7 +14,7 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
//
|
||||
Schema::defaultStringLength(191);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,8 +14,8 @@ return [
|
||||
*/
|
||||
|
||||
'defaults' => [
|
||||
'guard' => 'web',
|
||||
'passwords' => 'users',
|
||||
'guard' => 'receivers-web',
|
||||
'passwords' => 'receivers',
|
||||
],
|
||||
|
||||
/*
|
||||
@@ -36,15 +36,42 @@ return [
|
||||
*/
|
||||
|
||||
'guards' => [
|
||||
'web' => [
|
||||
// 'web' => [
|
||||
// 'driver' => 'session',
|
||||
// 'provider' => 'users',
|
||||
// ],
|
||||
// 'api' => [
|
||||
// 'driver' => 'token',
|
||||
// 'provider' => 'users',
|
||||
// ],
|
||||
|
||||
'receivers-web' => [
|
||||
'driver' => 'session',
|
||||
'provider' => 'users',
|
||||
'provider' => 'receivers',
|
||||
],
|
||||
'receivers-api' => [
|
||||
'driver' => 'token',
|
||||
'provider' => 'receivers',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'driver' => 'token',
|
||||
'provider' => 'users',
|
||||
'caseBuilders-web' => [
|
||||
'driver' => 'session',
|
||||
'provider' => 'caseBuilders',
|
||||
],
|
||||
'caseBuilders-api' => [
|
||||
'driver' => 'token',
|
||||
'provider' => 'caseBuilders',
|
||||
],
|
||||
|
||||
'admins-web' => [
|
||||
'driver' => 'session',
|
||||
'provider' => 'admins',
|
||||
],
|
||||
// 'admins-api' => [
|
||||
// 'driver' => 'token',
|
||||
// 'provider' => 'admins',
|
||||
// ],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
@@ -65,9 +92,21 @@ return [
|
||||
*/
|
||||
|
||||
'providers' => [
|
||||
'users' => [
|
||||
// 'users' => [
|
||||
// 'driver' => 'eloquent',
|
||||
// 'model' => App\User::class,
|
||||
// ],
|
||||
'receivers' => [
|
||||
'driver' => 'eloquent',
|
||||
'model' => App\User::class,
|
||||
'model' => App\Receiver::class,
|
||||
],
|
||||
'caseBuilders' => [
|
||||
'driver' => 'eloquent',
|
||||
'model' => App\CaseBuilder::class,
|
||||
],
|
||||
'admins' => [
|
||||
'driver' => 'eloquent',
|
||||
'model' => App\Admin::class,
|
||||
],
|
||||
|
||||
// 'users' => [
|
||||
@@ -92,11 +131,21 @@ return [
|
||||
*/
|
||||
|
||||
'passwords' => [
|
||||
'users' => [
|
||||
'provider' => 'users',
|
||||
'table' => 'password_resets',
|
||||
// 'users' => [
|
||||
// 'provider' => 'users',
|
||||
// 'table' => 'password_resets',
|
||||
// 'expire' => 60,
|
||||
// ],
|
||||
'receivers' => [
|
||||
'provider' => 'receivers',
|
||||
'table' => 'password_resets_for_receiver',
|
||||
'expire' => 60,
|
||||
],
|
||||
'caseBuilders' => [
|
||||
'provider' => 'caseBuilders',
|
||||
'table' => 'password_resets_for_casebuilder',
|
||||
'expire' => 60,
|
||||
]
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
36
database/migrations/2018_07_29_083103_create_admin_table.php
Normal file
36
database/migrations/2018_07_29_083103_create_admin_table.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateAdminTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('Admin', function (Blueprint $table) {
|
||||
$table->string('ID');
|
||||
$table->string('password');
|
||||
$table->string('name');
|
||||
$table->string('nick_name');
|
||||
$table->string('phone_number');
|
||||
$table->primary('ID');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('admin');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddRememberTokenForReceiver extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('Receiver', function (Blueprint $table) {
|
||||
$table->rememberToken();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('Receiver', function (Blueprint $table) {
|
||||
$table->dropRememberToken();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddRememberTokenForCasebuilder extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('CaseBuilder', function (Blueprint $table) {
|
||||
$table->rememberToken();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('CaseBuilder', function (Blueprint $table) {
|
||||
$table->dropRememberToken();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddRememberTokenForAdmin extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('Admin', function (Blueprint $table) {
|
||||
$table->rememberToken();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('Admin', function (Blueprint $table) {
|
||||
$table->dropRememberToken();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddTimestampForReceiver extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('Receiver', function (Blueprint $table) {
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('Receiver', function (Blueprint $table) {
|
||||
$table->dropTimestamps();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddTimestampForCasebuilder extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('CaseBuilder', function (Blueprint $table) {
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('CaseBuilder', function (Blueprint $table) {
|
||||
$table->dropTimestamps();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePasswordResetsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('password_resets', function (Blueprint $table) {
|
||||
$table->string('email')->index();
|
||||
$table->string('token');
|
||||
$table->timestamp('created_at')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('password_resets');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class RenameResetPasswordTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('password_resets', function (Blueprint $table) {
|
||||
$table->rename('password_resets_for_receiver');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('password_resets_for_receiver', function (Blueprint $table) {
|
||||
$table->rename('password_resets');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePasswordResetsForCasebuilderTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('password_resets_for_casebuilder', function (Blueprint $table) {
|
||||
$table->string('email')->index();
|
||||
$table->string('token');
|
||||
$table->timestamp('created_at')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('password_resets_for_casebuilder');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreatePasswordResetsForAdminTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('password_resets_for_admin', function (Blueprint $table) {
|
||||
$table->string('email')->index();
|
||||
$table->string('token');
|
||||
$table->timestamp('created_at')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('password_resets_for_admin');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class ModifiyPasswordResetsForReceiverColumn extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('Receiver', function (Blueprint $table) {
|
||||
$table->unique('email');
|
||||
});
|
||||
Schema::table('password_resets_for_receiver', function (Blueprint $table) {
|
||||
$table->foreign('email', 'fk_password_resets_for_receiver_1')->references('email')->on('Receiver')->onUpdate('NO ACTION')->onDelete('CASCADE');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('password_resets_for_receiver', function (Blueprint $table) {
|
||||
$table->dropForeign('fk_password_resets_for_receiver_1');
|
||||
});
|
||||
Schema::table('Receiver', function (Blueprint $table) {
|
||||
$table->dropUnique('email');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class ModifiyPasswordResetsForCasebuilderColumn extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('CaseBuilder', function (Blueprint $table) {
|
||||
$table->unique('contactEmail');
|
||||
});
|
||||
Schema::table('password_resets_for_casebuilder', function (Blueprint $table) {
|
||||
$table->foreign('email', 'fk_password_resets_for_casebuilder_1')->references('contactEmail')->on('CaseBuilder')->onUpdate('NO ACTION')->onDelete('CASCADE');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('password_resets_for_casebuilder', function (Blueprint $table) {
|
||||
$table->dropForeign('fk_password_resets_for_casebuilder_1');
|
||||
});
|
||||
Schema::table('CaseBuilder', function (Blueprint $table) {
|
||||
$table->dropUnique('contactEmail');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class DropPasswordResetsForAdminTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::dropIfExists('password_resets_for_admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::create('password_resets_for_admin', function (Blueprint $table) {
|
||||
$table->string('email')->index();
|
||||
$table->string('token');
|
||||
$table->timestamp('created_at')->nullable();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,6 @@ class DatabaseSeeder extends Seeder
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// $this->call(UsersTableSeeder::class);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
12
package.json
12
package.json
@@ -1,22 +1,24 @@
|
||||
{
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run development",
|
||||
"dev": "yarn development",
|
||||
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"watch": "npm run development -- --watch",
|
||||
"watch-poll": "npm run watch -- --watch-poll",
|
||||
"watch": "yarn development -- --watch",
|
||||
"watch-poll": "yarn watch -- --watch-poll",
|
||||
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"prod": "npm run production",
|
||||
"prod": "yarn production",
|
||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"axios": "^0.18",
|
||||
"bootstrap": "^4.0.0",
|
||||
"cross-env": "^5.1",
|
||||
"font-awesome": "^4.7.0",
|
||||
"jquery": "^3.2",
|
||||
"laravel-mix": "^2.0",
|
||||
"lodash": "^4.17.4",
|
||||
"popper.js": "^1.12",
|
||||
"vue": "^2.5.7"
|
||||
}
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
||||
|
||||
10479
public/css/app.css
vendored
10479
public/css/app.css
vendored
File diff suppressed because it is too large
Load Diff
47404
public/js/app.js
vendored
47404
public/js/app.js
vendored
File diff suppressed because it is too large
Load Diff
10
readme.md
10
readme.md
@@ -5,9 +5,7 @@
|
||||
sudo apt install php mysql-server phpmyadmin php-mbstring php-xml php-zip curl wget libpng-dev
|
||||
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
|
||||
sudo cat /etc/mysql/debian.cnf #查詢系統內定的MySQL預設帳號密碼
|
||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
||||
sudo apt update && apt install nodejs yarn
|
||||
sudo apt update && apt install nodejs npm
|
||||
|
||||
## 專案參數與環境重建
|
||||
當你Clone下來的專案,因為有git採用了 `.gitignore` 機制,比較敏感的參數(像是APP_KEY、資料庫帳密等)與共用的函式庫檔案不會包含進來,必須在自己這邊重建。
|
||||
@@ -22,7 +20,7 @@
|
||||
$ composer install
|
||||
|
||||
### 3. 安裝前端相關函式庫
|
||||
$ yarn install
|
||||
$ npm install
|
||||
|
||||
### 4. 設定 .env 檔
|
||||
將 `.env.example` 複製成 `.env`。
|
||||
@@ -38,6 +36,10 @@
|
||||
|
||||
就可以了,資料表都會自動產生
|
||||
|
||||
### 7. 重建前端部屬用檔案
|
||||
|
||||
$ npm run dev
|
||||
|
||||
## 執行此專案
|
||||
### 快速啟動
|
||||
$ php artisan serve
|
||||
|
||||
2
resources/assets/sass/app.scss
vendored
2
resources/assets/sass/app.scss
vendored
@@ -7,6 +7,8 @@
|
||||
|
||||
// Bootstrap
|
||||
@import '~bootstrap/scss/bootstrap';
|
||||
@import '~font-awesome/scss/font-awesome';
|
||||
$fa-font-path: "/fonts" !default;
|
||||
|
||||
.navbar-laravel {
|
||||
background-color: #fff;
|
||||
|
||||
71
resources/views/auth/login.blade.php
Normal file
71
resources/views/auth/login.blade.php
Normal file
@@ -0,0 +1,71 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">{{ __('Login') }}</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('login') }}" aria-label="{{ __('Login') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-sm-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required autofocus>
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
|
||||
|
||||
@if ($errors->has('password'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('password') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-md-6 offset-md-4">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
|
||||
|
||||
<label class="form-check-label" for="remember">
|
||||
{{ __('Remember Me') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-0">
|
||||
<div class="col-md-8 offset-md-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{{ __('Login') }}
|
||||
</button>
|
||||
|
||||
<a class="btn btn-link" href="{{ route('password.request') }}">
|
||||
{{ __('Forgot Your Password?') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
47
resources/views/auth/passwords/email.blade.php
Normal file
47
resources/views/auth/passwords/email.blade.php
Normal file
@@ -0,0 +1,47 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">{{ __('Reset Password') }}</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.email') }}" aria-label="{{ __('Reset Password') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-0">
|
||||
<div class="col-md-6 offset-md-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{{ __('Send Password Reset Link') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
65
resources/views/auth/passwords/reset.blade.php
Normal file
65
resources/views/auth/passwords/reset.blade.php
Normal file
@@ -0,0 +1,65 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">{{ __('Reset Password') }}</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('password.request') }}" aria-label="{{ __('Reset Password') }}">
|
||||
@csrf
|
||||
|
||||
<input type="hidden" name="token" value="{{ $token }}">
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ $email ?? old('email') }}" required autofocus>
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
|
||||
|
||||
@if ($errors->has('password'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('password') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-0">
|
||||
<div class="col-md-6 offset-md-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{{ __('Reset Password') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
77
resources/views/auth/register.blade.php
Normal file
77
resources/views/auth/register.blade.php
Normal file
@@ -0,0 +1,77 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">{{ __('Register') }}</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('register') }}" aria-label="{{ __('Register') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>
|
||||
|
||||
@if ($errors->has('name'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('name') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
|
||||
|
||||
@if ($errors->has('password'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('password') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-0">
|
||||
<div class="col-md-6 offset-md-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{{ __('Register') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
25
resources/views/casebuilder/index.blade.php
Normal file
25
resources/views/casebuilder/index.blade.php
Normal file
@@ -0,0 +1,25 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title','KOL管理')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Dashboard</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
You are logged in!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -1,6 +1,62 @@
|
||||
@extends('layout.app')
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', config('app.name', 'Laravel'))
|
||||
|
||||
@section('content')
|
||||
<button class="btn btn-primary">我想成為KOL</button>
|
||||
<button class="btn btn-primary">我想成為品牌/代理商</button>
|
||||
<main role="main">
|
||||
<section class="jumbotron text-center">
|
||||
<div class="container">
|
||||
<h1 class="jumbotron-heading">不只幫您找好KOL</h1>
|
||||
<p class="lead text-muted">讓您輕鬆管理預算、掌握專案流程</p>
|
||||
<h1 class="jumbotron-heading">不只幫您找好廠商</h1>
|
||||
<p class="lead text-muted">讓您與廠商溝通無障礙、完美結案</p>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="search" placeholder="Search" aria-label="Search">
|
||||
<button class="btn btn-outline-success" type="submit">Search</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- <p>
|
||||
<a href="#" class="btn btn-primary my-2">Main call to action</a>
|
||||
<a href="#" class="btn btn-secondary my-2">Secondary action</a>
|
||||
</p> -->
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<h2>我是廠商</h2>
|
||||
<ul>
|
||||
<li>KOL搜尋</li>
|
||||
<li>我的最愛KOL</li>
|
||||
<li>發案管理</li>
|
||||
<li>合作廠商</li>
|
||||
<li>結案管理</li>
|
||||
</ul>
|
||||
<button class="btn btn-primary">我想成為KOL</button>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<h2>我是KOL</h2>
|
||||
<ul>
|
||||
<li>案件通知</li>
|
||||
<li>合作廠商</li>
|
||||
<li>執行管理</li>
|
||||
<li>發布管理</li>
|
||||
<li>結案管理</li>
|
||||
</ul>
|
||||
<button class="btn btn-primary">我想成為品牌/代理商</button>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<h2>公告區</h2>
|
||||
<ul>
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
@endsection
|
||||
@@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>部落客媒合系統</title>
|
||||
<link rel="stylesheet" href="/css/app.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<a class="navbar-brand" href="#">部落客媒合系統</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="#">KOL登入<span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">品牌/代理商登入</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">後台登入</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="mt-3">
|
||||
@yield('content')
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
57
resources/views/layouts/app.blade.php
Normal file
57
resources/views/layouts/app.blade.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Styles -->
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<nav class="navbar navbar-expand-md navbar-light navbar-laravel">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{ url('/') }}">
|
||||
{{ config('app.name', 'BlogMatch') }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<!-- Left Side Of Navbar -->
|
||||
<ul class="navbar-nav mr-auto">
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ml-auto">
|
||||
@include('layouts.partials.auth-navbar-item')
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main>
|
||||
@yield('content')
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
@include('layouts.partials.footer')
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
39
resources/views/layouts/partials/auth-navbar-item.blade.php
Normal file
39
resources/views/layouts/partials/auth-navbar-item.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<!-- Authentication Links -->
|
||||
@guest
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('login') }}">登入</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('register') }}">註冊</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('register') }}">捷徑</a>
|
||||
</li>
|
||||
<!-- <li class="nav-item">
|
||||
<a class="nav-link" href="/receiver/login">KOL登入<span class="sr-only">(current)</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">品牌/代理商登入</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">後台登入</a>
|
||||
</li> -->
|
||||
@else
|
||||
<li class="nav-item dropdown">
|
||||
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
|
||||
{{ Auth::user()->name }} <span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
{{ __('Logout') }}
|
||||
</a>
|
||||
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
|
||||
@csrf
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
@endguest
|
||||
30
resources/views/layouts/partials/footer.blade.php
Normal file
30
resources/views/layouts/partials/footer.blade.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<hr>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-2">
|
||||
<h2>關於我們</h2>
|
||||
<ul>
|
||||
<li>關於</li>
|
||||
<li>行銷知識</li>
|
||||
<li>合作提案</li>
|
||||
<li>聯絡我們</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
<h2>服務條款</h2>
|
||||
<ul>
|
||||
<li>隱私政策</li>
|
||||
<li>網站條款</li>
|
||||
<li>常見問題</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
<h2>服務聯盟</h2>
|
||||
<ul>
|
||||
<li>開箱王</li>
|
||||
<li>BVG</li>
|
||||
<li>凱曜網路</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
25
resources/views/receiver/index.blade.php
Normal file
25
resources/views/receiver/index.blade.php
Normal file
@@ -0,0 +1,25 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title','KOL管理')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">Dashboard</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if (session('status'))
|
||||
<div class="alert alert-success" role="alert">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
You are logged in!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -11,32 +11,53 @@
|
||||
|
|
||||
*/
|
||||
|
||||
/* Route::get('/', function () {
|
||||
return view('welcome');
|
||||
}); */
|
||||
// Route::get('/', function () {
|
||||
// return view('welcome');
|
||||
// });
|
||||
|
||||
//首頁url
|
||||
Route::get('/', 'HomeController@index');
|
||||
// 首頁url
|
||||
Route::get('/', 'Home\HomeController@index')->name('home');
|
||||
|
||||
// //管理者相關url
|
||||
// Route::group(['prefix' => 'admin'], function () {
|
||||
// Route::get('/login', '');
|
||||
// Route::post('/login', '');
|
||||
// Route::get('/dashbord', '');
|
||||
// });
|
||||
//
|
||||
// //接案者相關url
|
||||
// Route::group(['prefix' => 'receiver'], function () {
|
||||
// Route::get('/login', '');
|
||||
// Route::post('/login', '');
|
||||
// Route::get('/register', '');
|
||||
// Route::post('/register', '');
|
||||
// });
|
||||
//
|
||||
// //發案者相關url
|
||||
// Route::group(['prefix' => 'casebuilder'], function () {
|
||||
// Route::get('/login', '');
|
||||
// Route::post('/login', '');
|
||||
// Route::get('/register', '');
|
||||
// Route::post('/register', '');
|
||||
// });
|
||||
// 登入相關的
|
||||
// Authentication Routes...
|
||||
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
|
||||
Route::get('/receiver/login', 'Auth\LoginController@showReceiverLoginForm')->name('receiver.login');
|
||||
Route::get('/casebuilder/login', 'Auth\LoginController@showCaseBuilderLoginForm')->name('casebuilder.login');
|
||||
Route::get('/admin/login', 'Auth\LoginController@showAdminLoginForm')->name('admin.login');
|
||||
|
||||
Route::post('login', 'Auth\LoginController@login');
|
||||
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
|
||||
|
||||
// Registration Routes...
|
||||
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
|
||||
Route::post('register', 'Auth\RegisterController@register');
|
||||
|
||||
// Password Reset Routes...
|
||||
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
|
||||
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
|
||||
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
|
||||
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
|
||||
|
||||
// 接案者相關url
|
||||
Route::group(['prefix' => 'receiver'], function () {
|
||||
Route::get('/', 'Receiver\ReceiverController@index');
|
||||
// Route::get('/login', 'Receiver\ReceiverController@loginPage');
|
||||
// Route::post('/login', 'Receiver\ReceiverController@loginProcess');
|
||||
// Route::get('/logout','Receiver\ReceiverController@logout');
|
||||
// Route::get('/register', '');
|
||||
// Route::post('/register', '');
|
||||
});
|
||||
|
||||
//發案者相關url
|
||||
Route::group(['prefix' => 'casebuilder'], function () {
|
||||
Route::get('/', 'CaseBuilder\CaseBuilderController@index');
|
||||
// Route::get('/login', '');
|
||||
// Route::post('/login', '');
|
||||
// Route::get('/register', '');
|
||||
// Route::post('/register', '');
|
||||
});
|
||||
|
||||
// 管理者相關url
|
||||
Route::group(['prefix' => 'admin'], function () {
|
||||
// Route::get('/dashbord', '');
|
||||
});
|
||||
|
||||
4
webpack.mix.js
vendored
4
webpack.mix.js
vendored
@@ -12,4 +12,6 @@ let mix = require('laravel-mix');
|
||||
*/
|
||||
|
||||
mix.js('resources/assets/js/app.js', 'public/js')
|
||||
.sass('resources/assets/sass/app.scss', 'public/css');
|
||||
.sass('resources/assets/sass/app.scss', 'public/css')
|
||||
.copy('node_modules/font-awesome/fonts', 'public/fonts')
|
||||
.sourceMaps();
|
||||
|
||||
Reference in New Issue
Block a user