commit
74b0d420a9
@ -112,7 +112,7 @@ class Login extends Controller
|
||||
'error' => false,
|
||||
'message' => null,
|
||||
'data' => null,
|
||||
'redirect' => redirect()->intended()->getTargetUrl(),
|
||||
'redirect' => redirect()->intended($user->landing_page)->getTargetUrl(),
|
||||
];
|
||||
|
||||
return response()->json($response);
|
||||
|
@ -35,13 +35,33 @@ class Users extends Controller
|
||||
*/
|
||||
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) {
|
||||
return $r->hasPermission('read-client-portal');
|
||||
});
|
||||
|
||||
$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)
|
||||
{
|
||||
$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')) {
|
||||
// Show only roles with customer permission
|
||||
$roles = Role::all()->reject(function ($r) {
|
||||
@ -95,7 +135,7 @@ class Users extends Controller
|
||||
|
||||
$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
|
||||
$this->middleware('permission:create-common-dashboards')->only(['create', 'store', 'duplicate', 'import']);
|
||||
$this->middleware('permission:read-common-dashboards')->only(['index', 'edit', 'export']);
|
||||
$this->middleware('permission:update-common-dashboards')->only(['update', 'enable', 'disable', 'share']);
|
||||
$this->middleware('permission:read-common-dashboards')->only(['show']);
|
||||
$this->middleware('permission:update-common-dashboards')->only(['index', 'edit', 'export', 'update', 'enable', 'disable', 'share']);
|
||||
$this->middleware('permission:delete-common-dashboards')->only('destroy');
|
||||
}
|
||||
|
||||
@ -100,13 +100,13 @@ class Dashboards extends Controller
|
||||
$response = $this->ajaxDispatch(new CreateDashboard($request));
|
||||
|
||||
if ($response['success']) {
|
||||
$response['redirect'] = route('dashboard');
|
||||
$response['redirect'] = route('dashboards.index');
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.dashboards', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$response['redirect'] = route('dashboard');
|
||||
$response['redirect'] = route('dashboards.create');
|
||||
|
||||
$message = $response['message'];
|
||||
|
||||
@ -209,7 +209,7 @@ class Dashboards extends Controller
|
||||
{
|
||||
$response = $this->ajaxDispatch(new DeleteDashboard($dashboard));
|
||||
|
||||
$response['redirect'] = route('dashboard');
|
||||
$response['redirect'] = route('dashboards.index');
|
||||
|
||||
if ($response['success']) {
|
||||
$message = trans('messages.success.deleted', ['type' => $dashboard->name]);
|
||||
|
@ -17,11 +17,13 @@ class RedirectIfAuthenticated
|
||||
public function handle($request, Closure $next, $guard = null)
|
||||
{
|
||||
if (auth()->guard($guard)->check()) {
|
||||
if (user()->contact) {
|
||||
$user = user();
|
||||
|
||||
if ($user->contact) {
|
||||
return redirect()->route('portal.dashboard');
|
||||
}
|
||||
|
||||
return redirect()->route('dashboard');
|
||||
return redirect()->route($user->landing_page);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
|
@ -19,28 +19,30 @@ class AddAdminItems
|
||||
$user = user();
|
||||
$attr = ['icon' => ''];
|
||||
|
||||
// Dashboard
|
||||
$dashboards = user()->dashboards()->enabled()->get();
|
||||
// Dashboards
|
||||
if ($user->can('read-common-dashboards')) {
|
||||
$dashboards = $user->dashboards()->enabled()->get();
|
||||
|
||||
if ($dashboards->count() > 1) {
|
||||
$menu->dropdown(trim(trans_choice('general.dashboards', 2)), function ($sub) use ($user, $attr, $dashboards) {
|
||||
foreach ($dashboards as $key => $dashboard) {
|
||||
$path = (session('dashboard_id') == $dashboard->id) ? '/' : '/?dashboard_id=' . $dashboard->id;
|
||||
if ($dashboards->count() > 1) {
|
||||
$menu->dropdown(trim(trans_choice('general.dashboards', 2)), function ($sub) use ($user, $attr, $dashboards) {
|
||||
foreach ($dashboards as $key => $dashboard) {
|
||||
$path = (session('dashboard_id') == $dashboard->id) ? '/' : '/?dashboard_id=' . $dashboard->id;
|
||||
|
||||
$sub->url($path, $dashboard->name, $key, $attr);
|
||||
}
|
||||
}, 1, [
|
||||
'url' => '/',
|
||||
'title' => trans_choice('general.dashboards', 2),
|
||||
'icon' => 'fa fa-tachometer-alt',
|
||||
]);
|
||||
} else {
|
||||
$menu->add([
|
||||
'url' => '/',
|
||||
'title' => trans_choice('general.dashboards', 1),
|
||||
'icon' => 'fa fa-tachometer-alt',
|
||||
'order' => 1,
|
||||
]);
|
||||
$sub->url($path, $dashboard->name, $key, $attr);
|
||||
}
|
||||
}, 1, [
|
||||
'url' => '/',
|
||||
'title' => trans_choice('general.dashboards', 2),
|
||||
'icon' => 'fa fa-tachometer-alt',
|
||||
]);
|
||||
} else {
|
||||
$menu->add([
|
||||
'url' => '/',
|
||||
'title' => trans_choice('general.dashboards', 1),
|
||||
'icon' => 'fa fa-tachometer-alt',
|
||||
'order' => 1,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Items
|
||||
|
@ -24,7 +24,7 @@ class User extends Authenticatable
|
||||
*
|
||||
* @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.
|
||||
|
@ -235,6 +235,11 @@ class CoreV200 extends Migration
|
||||
$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',
|
||||
'reset' => 'Reset',
|
||||
'never' => 'never',
|
||||
'landing_page' => 'Landing Page',
|
||||
|
||||
'password' => [
|
||||
'current' => 'Password',
|
||||
|
@ -27,6 +27,8 @@
|
||||
|
||||
{{ 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')
|
||||
@stack('picture_input_start')
|
||||
<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('landing_page', trans('auth.landing_page'), 'sign-in-alt', $routes, $user->landing_page) }}
|
||||
|
||||
@if (setting('default.use_gravatar', '0') == '1')
|
||||
@stack('picture_input_start')
|
||||
<div class="form-group col-md-6">
|
||||
|
@ -19,7 +19,7 @@
|
||||
'@click' => 'onCreateWidget()',
|
||||
]) !!}
|
||||
@endpermission
|
||||
@permission('read-common-dashboards')
|
||||
@permission('update-common-dashboards')
|
||||
<div class="dropdown-divider"></div>
|
||||
@permission('create-common-dashboards')
|
||||
<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">
|
||||
<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>
|
||||
@endsection
|
||||
|
@ -10,7 +10,9 @@
|
||||
<div class="card-body">
|
||||
<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>
|
||||
@endsection
|
||||
|
@ -10,8 +10,9 @@
|
||||
<div class="card-body">
|
||||
<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>
|
||||
@endsection
|
||||
|
||||
|
@ -6,10 +6,12 @@
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<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 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>
|
||||
@endpermission
|
||||
</a>
|
||||
@permission('read-common-companies')
|
||||
<div class="dropdown-menu dropdown-menu-right menu-dropdown menu-dropdown-width">
|
||||
|
Loading…
x
Reference in New Issue
Block a user