user landing page
This commit is contained in:
parent
61a6ea6687
commit
9f00e1a0d6
@ -112,7 +112,7 @@ class Login extends Controller
|
|||||||
'error' => false,
|
'error' => false,
|
||||||
'message' => null,
|
'message' => null,
|
||||||
'data' => null,
|
'data' => null,
|
||||||
'redirect' => redirect()->intended()->getTargetUrl(),
|
'redirect' => redirect()->intended($user->landing_page)->getTargetUrl(),
|
||||||
];
|
];
|
||||||
|
|
||||||
return response()->json($response);
|
return response()->json($response);
|
||||||
|
@ -35,13 +35,33 @@ class Users extends Controller
|
|||||||
*/
|
*/
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
|
$routes = [
|
||||||
|
'dashboard' => trans_choice('general.dashboards', 1),
|
||||||
|
'items.index' => trans_choice('general.items', 2),
|
||||||
|
'invoices.index' => trans_choice('general.invoices', 2),
|
||||||
|
'revenues.index' => trans_choice('general.revenues', 2),
|
||||||
|
'customers.index' => trans_choice('general.customers', 2),
|
||||||
|
'bills.index' => trans_choice('general.bills', 2),
|
||||||
|
'payments.index' => trans_choice('general.payments', 2),
|
||||||
|
'vendors.index' => trans_choice('general.vendors', 2),
|
||||||
|
'accounts.index' => trans_choice('general.accounts', 2),
|
||||||
|
'transfers.index' => trans_choice('general.transfers', 2),
|
||||||
|
'transactions.index' => trans_choice('general.transactions', 2),
|
||||||
|
'reconciliations.index' => trans_choice('general.reconciliations', 2),
|
||||||
|
'reports.index' => trans_choice('general.reports', 2),
|
||||||
|
'settings.index' => trans_choice('general.settings', 2),
|
||||||
|
'categories.index' => trans_choice('general.categories', 2),
|
||||||
|
'currencies.index' => trans_choice('general.currencies', 2),
|
||||||
|
'taxes.index' => trans_choice('general.taxes', 2),
|
||||||
|
];
|
||||||
|
|
||||||
$roles = Role::all()->reject(function ($r) {
|
$roles = Role::all()->reject(function ($r) {
|
||||||
return $r->hasPermission('read-client-portal');
|
return $r->hasPermission('read-client-portal');
|
||||||
});
|
});
|
||||||
|
|
||||||
$companies = user()->companies()->get()->sortBy('name');
|
$companies = user()->companies()->get()->sortBy('name');
|
||||||
|
|
||||||
return view('auth.users.create', compact('roles', 'companies'));
|
return view('auth.users.create', compact('roles', 'companies', 'routes'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -81,6 +101,26 @@ class Users extends Controller
|
|||||||
*/
|
*/
|
||||||
public function edit(User $user)
|
public function edit(User $user)
|
||||||
{
|
{
|
||||||
|
$routes = [
|
||||||
|
'dashboard' => trans_choice('general.dashboards', 1),
|
||||||
|
'items.index' => trans_choice('general.items', 2),
|
||||||
|
'invoices.index' => trans_choice('general.invoices', 2),
|
||||||
|
'revenues.index' => trans_choice('general.revenues', 2),
|
||||||
|
'customers.index' => trans_choice('general.customers', 2),
|
||||||
|
'bills.index' => trans_choice('general.bills', 2),
|
||||||
|
'payments.index' => trans_choice('general.payments', 2),
|
||||||
|
'vendors.index' => trans_choice('general.vendors', 2),
|
||||||
|
'accounts.index' => trans_choice('general.accounts', 2),
|
||||||
|
'transfers.index' => trans_choice('general.transfers', 2),
|
||||||
|
'transactions.index' => trans_choice('general.transactions', 2),
|
||||||
|
'reconciliations.index' => trans_choice('general.reconciliations', 2),
|
||||||
|
'reports.index' => trans_choice('general.reports', 2),
|
||||||
|
'settings.index' => trans_choice('general.settings', 2),
|
||||||
|
'categories.index' => trans_choice('general.categories', 2),
|
||||||
|
'currencies.index' => trans_choice('general.currencies', 2),
|
||||||
|
'taxes.index' => trans_choice('general.taxes', 2),
|
||||||
|
];
|
||||||
|
|
||||||
if ($user->can('read-client-portal')) {
|
if ($user->can('read-client-portal')) {
|
||||||
// Show only roles with customer permission
|
// Show only roles with customer permission
|
||||||
$roles = Role::all()->reject(function ($r) {
|
$roles = Role::all()->reject(function ($r) {
|
||||||
@ -95,7 +135,7 @@ class Users extends Controller
|
|||||||
|
|
||||||
$companies = user()->companies()->get()->sortBy('name');
|
$companies = user()->companies()->get()->sortBy('name');
|
||||||
|
|
||||||
return view('auth.users.edit', compact('user', 'companies', 'roles'));
|
return view('auth.users.edit', compact('user', 'companies', 'roles', 'routes'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,6 +225,6 @@ class Companies extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect('/');
|
return redirect()->route('dashboard');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,8 +25,8 @@ class Dashboards extends Controller
|
|||||||
{
|
{
|
||||||
// Add CRUD permission check
|
// Add CRUD permission check
|
||||||
$this->middleware('permission:create-common-dashboards')->only(['create', 'store', 'duplicate', 'import']);
|
$this->middleware('permission:create-common-dashboards')->only(['create', 'store', 'duplicate', 'import']);
|
||||||
$this->middleware('permission:read-common-dashboards')->only(['index', 'edit', 'export']);
|
$this->middleware('permission:read-common-dashboards')->only(['show']);
|
||||||
$this->middleware('permission:update-common-dashboards')->only(['update', 'enable', 'disable', 'share']);
|
$this->middleware('permission:update-common-dashboards')->only(['index', 'edit', 'export', 'update', 'enable', 'disable', 'share']);
|
||||||
$this->middleware('permission:delete-common-dashboards')->only('destroy');
|
$this->middleware('permission:delete-common-dashboards')->only('destroy');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,13 +100,13 @@ class Dashboards extends Controller
|
|||||||
$response = $this->ajaxDispatch(new CreateDashboard($request));
|
$response = $this->ajaxDispatch(new CreateDashboard($request));
|
||||||
|
|
||||||
if ($response['success']) {
|
if ($response['success']) {
|
||||||
$response['redirect'] = route('dashboard');
|
$response['redirect'] = route('dashboards.index');
|
||||||
|
|
||||||
$message = trans('messages.success.added', ['type' => trans_choice('general.dashboards', 1)]);
|
$message = trans('messages.success.added', ['type' => trans_choice('general.dashboards', 1)]);
|
||||||
|
|
||||||
flash($message)->success();
|
flash($message)->success();
|
||||||
} else {
|
} else {
|
||||||
$response['redirect'] = route('dashboard');
|
$response['redirect'] = route('dashboards.create');
|
||||||
|
|
||||||
$message = $response['message'];
|
$message = $response['message'];
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ class Dashboards extends Controller
|
|||||||
{
|
{
|
||||||
$response = $this->ajaxDispatch(new DeleteDashboard($dashboard));
|
$response = $this->ajaxDispatch(new DeleteDashboard($dashboard));
|
||||||
|
|
||||||
$response['redirect'] = route('dashboard');
|
$response['redirect'] = route('dashboards.index');
|
||||||
|
|
||||||
if ($response['success']) {
|
if ($response['success']) {
|
||||||
$message = trans('messages.success.deleted', ['type' => $dashboard->name]);
|
$message = trans('messages.success.deleted', ['type' => $dashboard->name]);
|
||||||
|
@ -17,11 +17,13 @@ class RedirectIfAuthenticated
|
|||||||
public function handle($request, Closure $next, $guard = null)
|
public function handle($request, Closure $next, $guard = null)
|
||||||
{
|
{
|
||||||
if (auth()->guard($guard)->check()) {
|
if (auth()->guard($guard)->check()) {
|
||||||
if (user()->contact) {
|
$user = user();
|
||||||
|
|
||||||
|
if ($user->contact) {
|
||||||
return redirect()->route('portal.dashboard');
|
return redirect()->route('portal.dashboard');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('dashboard');
|
return redirect()->route($user->landing_page);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
|
@ -19,28 +19,30 @@ class AddAdminItems
|
|||||||
$user = user();
|
$user = user();
|
||||||
$attr = ['icon' => ''];
|
$attr = ['icon' => ''];
|
||||||
|
|
||||||
// Dashboard
|
// Dashboards
|
||||||
$dashboards = user()->dashboards()->enabled()->get();
|
if ($user->can('read-common-dashboards')) {
|
||||||
|
$dashboards = $user->dashboards()->enabled()->get();
|
||||||
|
|
||||||
if ($dashboards->count() > 1) {
|
if ($dashboards->count() > 1) {
|
||||||
$menu->dropdown(trim(trans_choice('general.dashboards', 2)), function ($sub) use ($user, $attr, $dashboards) {
|
$menu->dropdown(trim(trans_choice('general.dashboards', 2)), function ($sub) use ($user, $attr, $dashboards) {
|
||||||
foreach ($dashboards as $key => $dashboard) {
|
foreach ($dashboards as $key => $dashboard) {
|
||||||
$path = (session('dashboard_id') == $dashboard->id) ? '/' : '/?dashboard_id=' . $dashboard->id;
|
$path = (session('dashboard_id') == $dashboard->id) ? '/' : '/?dashboard_id=' . $dashboard->id;
|
||||||
|
|
||||||
$sub->url($path, $dashboard->name, $key, $attr);
|
$sub->url($path, $dashboard->name, $key, $attr);
|
||||||
}
|
}
|
||||||
}, 1, [
|
}, 1, [
|
||||||
'url' => '/',
|
'url' => '/',
|
||||||
'title' => trans_choice('general.dashboards', 2),
|
'title' => trans_choice('general.dashboards', 2),
|
||||||
'icon' => 'fa fa-tachometer-alt',
|
'icon' => 'fa fa-tachometer-alt',
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
$menu->add([
|
$menu->add([
|
||||||
'url' => '/',
|
'url' => '/',
|
||||||
'title' => trans_choice('general.dashboards', 1),
|
'title' => trans_choice('general.dashboards', 1),
|
||||||
'icon' => 'fa fa-tachometer-alt',
|
'icon' => 'fa fa-tachometer-alt',
|
||||||
'order' => 1,
|
'order' => 1,
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Items
|
// Items
|
||||||
|
@ -24,7 +24,7 @@ class User extends Authenticatable
|
|||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $fillable = ['name', 'email', 'password', 'locale', 'enabled'];
|
protected $fillable = ['name', 'email', 'password', 'locale', 'enabled', 'landing_page'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes that should be hidden for arrays.
|
* The attributes that should be hidden for arrays.
|
||||||
|
@ -235,6 +235,11 @@ class CoreV200 extends Migration
|
|||||||
$table->dropUnique(['company_id', 'sku', 'deleted_at']);
|
$table->dropUnique(['company_id', 'sku', 'deleted_at']);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Landing page column
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->string('landing_page', 70)->nullable()->default('dashboard');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,6 +13,7 @@ return [
|
|||||||
'current_email' => 'Current Email',
|
'current_email' => 'Current Email',
|
||||||
'reset' => 'Reset',
|
'reset' => 'Reset',
|
||||||
'never' => 'never',
|
'never' => 'never',
|
||||||
|
'landing_page' => 'Landing Page',
|
||||||
|
|
||||||
'password' => [
|
'password' => [
|
||||||
'current' => 'Password',
|
'current' => 'Password',
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
{{ Form::selectGroup('locale', trans_choice('general.languages', 1), 'flag', language()->allowed(), setting('default.locale')) }}
|
{{ Form::selectGroup('locale', trans_choice('general.languages', 1), 'flag', language()->allowed(), setting('default.locale')) }}
|
||||||
|
|
||||||
|
{{ Form::selectGroup('landing_page', trans('auth.landing_page'), 'sign-in-alt', $routes, 'dashboard') }}
|
||||||
|
|
||||||
@if (setting('default.use_gravatar', '0') == '1')
|
@if (setting('default.use_gravatar', '0') == '1')
|
||||||
@stack('picture_input_start')
|
@stack('picture_input_start')
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
{{ Form::selectGroup('locale', trans_choice('general.languages', 1), 'flag', language()->allowed(), $user->locale) }}
|
{{ Form::selectGroup('locale', trans_choice('general.languages', 1), 'flag', language()->allowed(), $user->locale) }}
|
||||||
|
|
||||||
|
{{ Form::selectGroup('landing_page', trans('auth.landing_page'), 'sign-in-alt', $routes, $user->landing_page) }}
|
||||||
|
|
||||||
@if (setting('default.use_gravatar', '0') == '1')
|
@if (setting('default.use_gravatar', '0') == '1')
|
||||||
@stack('picture_input_start')
|
@stack('picture_input_start')
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
'@click' => 'onCreateWidget()',
|
'@click' => 'onCreateWidget()',
|
||||||
]) !!}
|
]) !!}
|
||||||
@endpermission
|
@endpermission
|
||||||
@permission('read-common-dashboards')
|
@permission('update-common-dashboards')
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
@permission('create-common-dashboards')
|
@permission('create-common-dashboards')
|
||||||
<a class="dropdown-item" href="{{ route('dashboards.create') }}">{{ trans('general.title.create', ['type' => trans_choice('general.dashboards', 1)]) }}</a>
|
<a class="dropdown-item" href="{{ route('dashboards.create') }}">{{ trans('general.title.create', ['type' => trans_choice('general.dashboards', 1)]) }}</a>
|
||||||
|
@ -10,7 +10,9 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p>{{ trans('errors.message.403') }}</p>
|
<p>{{ trans('errors.message.403') }}</p>
|
||||||
|
|
||||||
<a href="{{ url('/') }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans_choice('general.dashboards', 1)]) }}</a>
|
@php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp
|
||||||
|
|
||||||
|
<a href="{{ $landing_page }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans_choice('general.dashboards', 1)]) }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -10,7 +10,9 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p>{{ trans('errors.message.404') }}</p>
|
<p>{{ trans('errors.message.404') }}</p>
|
||||||
|
|
||||||
<a href="{{ url('/') }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans_choice('general.dashboards', 1)]) }}</a>
|
@php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp
|
||||||
|
|
||||||
|
<a href="{{ $landing_page }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans_choice('general.dashboards', 1)]) }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -10,8 +10,9 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p>{{ trans('errors.message.500') }}</p>
|
<p>{{ trans('errors.message.500') }}</p>
|
||||||
|
|
||||||
<a href="{{ url('/') }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans_choice('general.dashboards', 1)]) }}</a>
|
@php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp
|
||||||
|
|
||||||
|
<a href="{{ $landing_page }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans_choice('general.dashboards', 1)]) }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
|
@ -6,10 +6,12 @@
|
|||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<span class="avatar avatar-xs background-unset">
|
<span class="avatar avatar-xs background-unset">
|
||||||
<img class="border-radius-none border-0 mr-3" alt="Image placeholder" src="{{ setting('company.logo') ? Storage::url(setting('company.logo')) : asset('public/img/akaunting-logo-white.png') }}">
|
<img class="border-radius-none border-0 mr-3" alt="Akaunting" src="{{ asset('public/img/akaunting-logo-white.png') }}">
|
||||||
</span>
|
</span>
|
||||||
<span class="nav-link-text long-texts pl-2 mwpx-100">{{ Str::limit(setting('company.name'), 22) }}</span>
|
<span class="nav-link-text long-texts pl-2 mwpx-100">{{ Str::limit(setting('company.name'), 22) }}</span>
|
||||||
|
@permission('read-common-companies')
|
||||||
<i class="fas fa-sort-down pl-2"></i>
|
<i class="fas fa-sort-down pl-2"></i>
|
||||||
|
@endpermission
|
||||||
</a>
|
</a>
|
||||||
@permission('read-common-companies')
|
@permission('read-common-companies')
|
||||||
<div class="dropdown-menu dropdown-menu-right menu-dropdown menu-dropdown-width">
|
<div class="dropdown-menu dropdown-menu-right menu-dropdown menu-dropdown-width">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user