akaunting 3.0 (the last dance)

This commit is contained in:
Burak Civan
2022-06-01 10:15:55 +03:00
parent cead09f6d4
commit d9c0764572
3812 changed files with 126831 additions and 102949 deletions

View File

@ -36,7 +36,7 @@ class Login extends Controller
public function store(Request $request)
{
// Attempt to login
if (!auth()->attempt($request->only('email', 'password'), $request->get('remember', false))) {
if (! auth()->attempt($request->only('email', 'password'), $request->get('remember', false))) {
return response()->json([
'status' => null,
'success' => false,
@ -51,7 +51,7 @@ class Login extends Controller
$user = user();
// Check if user is enabled
if (!$user->enabled) {
if (! $user->enabled) {
$this->logout();
return response()->json([
@ -69,7 +69,7 @@ class Login extends Controller
});
// Logout if no company assigned
if (!$company) {
if (! $company) {
$this->logout();
return response()->json([
@ -95,7 +95,7 @@ class Login extends Controller
'status' => null,
'success' => true,
'error' => false,
'message' => null,
'message' => trans('auth.login_redirect'),
'data' => null,
'redirect' => url($path),
]);
@ -108,7 +108,7 @@ class Login extends Controller
'status' => null,
'success' => true,
'error' => false,
'message' => null,
'message' => trans('auth.login_redirect'),
'data' => null,
'redirect' => redirect()->intended($url)->getTargetUrl(),
]);
@ -128,6 +128,9 @@ class Login extends Controller
// Session destroy is required if stored in database
if (config('session.driver') == 'database') {
$request = app('Illuminate\Http\Request');
$request->session()->invalidate();
$request->session()->regenerateToken();
$request->session()->getHandler()->destroy($request->session()->getId());
}
}

View File

@ -1,130 +0,0 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Abstracts\Http\Controller;
use App\Http\Requests\Auth\Permission as Request;
use App\Jobs\Auth\CreatePermission;
use App\Jobs\Auth\DeletePermission;
use App\Jobs\Auth\UpdatePermission;
use App\Models\Auth\Permission;
class Permissions extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$permissions = Permission::collect();
return $this->response('auth.permissions.index', compact('permissions'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
return view('auth.permissions.create');
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request)
{
$response = $this->ajaxDispatch(new CreatePermission($request));
if ($response['success']) {
$response['redirect'] = route('permissions.index');
$message = trans('messages.success.added', ['type' => trans_choice('general.permissions', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('permissions.create');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**
* Show the form for editing the specified resource.
*
* @param Permission $permission
*
* @return Response
*/
public function edit(Permission $permission)
{
return view('auth.permissions.edit', compact('permission'));
}
/**
* Update the specified resource in storage.
*
* @param Permission $permission
* @param Request $request
*
* @return Response
*/
public function update(Permission $permission, Request $request)
{
$response = $this->ajaxDispatch(new UpdatePermission($permission, $request));
if ($response['success']) {
$response['redirect'] = route('permissions.index');
$message = trans('messages.success.updated', ['type' => $permission->display_name]);
flash($message)->success();
} else {
$response['redirect'] = route('permissions.edit', $permission->id);
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**
* Remove the specified resource from storage.
*
* @param Permission $permission
*
* @return Response
*/
public function destroy(Permission $permission)
{
$response = $this->ajaxDispatch(new DeletePermission($permission));
$response['redirect'] = route('permissions.index');
if ($response['success']) {
$message = trans('messages.success.deleted', ['type' => $permission->display_name]);
flash($message)->success();
} else {
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
}

View File

@ -0,0 +1,84 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Abstracts\Http\Controller;
use App\Http\Requests\Auth\Register as Request;
use App\Jobs\Auth\DeleteInvitation;
use App\Models\Auth\UserInvitation;
use Illuminate\Auth\Events\Registered;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Str;
class Register extends Controller
{
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
public function create($token)
{
$invitation = UserInvitation::token($token)->first();
if ($invitation) {
return view('auth.register.create', ['token' => $token]);
}
abort(403);
}
public function store(Request $request)
{
$invitation = UserInvitation::token($request->get('token'))->first();
$user = $invitation->user;
$this->dispatch(new DeleteInvitation($invitation));
event(new Registered($user));
if ($response = $this->registered($request, $user)) {
return $response;
}
}
/**
* The user has been registered.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function registered(Request $request, $user)
{
$user->forceFill([
'password' => $request->password,
'remember_token' => Str::random(60),
])->save();
$this->guard()->login($user);
$message = trans('messages.success.connected', ['type' => trans_choice('general.users', 1)]);
flash($message)->success();
return response()->json([
'redirect' => url($this->redirectPath()),
]);
}
}

View File

@ -90,7 +90,7 @@ class Reset extends Controller
});
// Logout if no company assigned
if (!$company) {
if (! $company) {
$this->guard()->logout();
return response()->json([

View File

@ -1,155 +0,0 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Abstracts\Http\Controller;
use App\Http\Requests\Auth\Role as Request;
use App\Jobs\Auth\CreateRole;
use App\Jobs\Auth\DeleteRole;
use App\Jobs\Auth\UpdateRole;
use App\Models\Auth\Permission;
use App\Models\Auth\Role;
class Roles extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$roles = Role::collect();
return $this->response('auth.roles.index', compact('roles'));
}
/**
* Show the form for viewing the specified resource.
*
* @return Response
*/
public function show()
{
return redirect()->route('roles.index');
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
$permissions = [];
$actions = ['read', 'create', 'update', 'delete'];
foreach ($actions as $action) {
$permissions[$action] = Permission::action($action)->get()->sortBy('title')->all();
}
return view('auth.roles.create', compact('actions', 'permissions'));
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request)
{
$response = $this->ajaxDispatch(new CreateRole($request));
if ($response['success']) {
$response['redirect'] = route('roles.index');
$message = trans('messages.success.added', ['type' => trans_choice('general.roles', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('roles.create');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**
* Show the form for editing the specified resource.
*
* @param Role $role
*
* @return Response
*/
public function edit(Role $role)
{
$permissions = [];
$actions = ['read', 'create', 'update', 'delete'];
foreach ($actions as $action) {
$permissions[$action] = Permission::action($action)->get()->sortBy('title')->all();
}
return view('auth.roles.edit', compact('role', 'actions', 'permissions'));
}
/**
* Update the specified resource in storage.
*
* @param Role $role
* @param Request $request
*
* @return Response
*/
public function update(Role $role, Request $request)
{
$response = $this->ajaxDispatch(new UpdateRole($role, $request));
if ($response['success']) {
$response['redirect'] = route('roles.index');
$message = trans('messages.success.updated', ['type' => $role->display_name]);
flash($message)->success();
} else {
$response['redirect'] = route('roles.edit', $role->id);
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**
* Remove the specified resource from storage.
*
* @param Role $role
*
* @return Response
*/
public function destroy(Role $role)
{
$response = $this->ajaxDispatch(new DeleteRole($role));
$response['redirect'] = route('roles.index');
if ($response['success']) {
$message = trans('messages.success.deleted', ['type' => $role->display_name]);
flash($message)->success();
} else {
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
}

View File

@ -5,17 +5,19 @@ namespace App\Http\Controllers\Auth;
use App\Abstracts\Http\Controller;
use App\Events\Auth\LandingPageShowing;
use App\Http\Requests\Auth\User as Request;
use App\Jobs\Auth\CreateInvitation;
use App\Jobs\Auth\CreateUser;
use App\Jobs\Auth\DeleteUser;
use App\Jobs\Auth\UpdateUser;
use App\Models\Auth\User;
use App\Models\Auth\Role;
use App\Models\Auth\User;
use App\Traits\Cloud;
use App\Traits\Uploads;
use Illuminate\Http\Request as BaseRequest;
class Users extends Controller
{
use Uploads;
use Cloud, Uploads;
public function __construct()
{
@ -66,11 +68,13 @@ class Users extends Controller
$roles = Role::all()->reject(function ($r) {
return $r->hasPermission('read-client-portal');
});
})->pluck('display_name', 'id');
$companies = user()->companies()->take(setting('default.select_limit'))->get()->sortBy('name')->pluck('name', 'id');
return view('auth.users.create', compact('roles', 'companies', 'landing_pages'));
$roles_url = $this->getCloudRolesPageUrl();
return view('auth.users.create', compact('roles', 'companies', 'landing_pages', 'roles_url'));
}
/**
@ -87,7 +91,7 @@ class Users extends Controller
if ($response['success']) {
$response['redirect'] = route('users.index');
$message = trans('messages.success.added', ['type' => trans_choice('general.users', 1)]);
$message = trans('messages.success.invited', ['type' => trans_choice('general.users', 1)]);
flash($message)->success();
} else {
@ -125,29 +129,33 @@ class Users extends Controller
// Show only roles with customer permission
$roles = Role::all()->reject(function ($r) {
return !$r->hasPermission('read-client-portal');
});
})->pluck('display_name', 'id');
} else {
// Don't show roles with customer permission
$roles = Role::all()->reject(function ($r) {
return $r->hasPermission('read-client-portal');
});
})->pluck('display_name', 'id');
}
$companies = user()->companies()->take(setting('default.select_limit'))->get()->sortBy('name')->pluck('name', 'id');
if ($user->company_ids) {
foreach($user->company_ids as $company_id) {
foreach ($user->company_ids as $company_id) {
if ($companies->has($company_id)) {
continue;
}
$company = \App\Models\Common\Company::find($company_id);
$company = company($company_id);
$companies->put($company->id, $company->name);
}
}
return view('auth.users.edit', compact('user', 'companies', 'roles', 'landing_pages'));
$roles_url = $this->getCloudRolesPageUrl();
$route = (request()->route()->getName() == 'profile.edit') ? 'profile.update' : 'users.update';
return view('auth.users.edit', compact('user', 'companies', 'roles', 'landing_pages', 'roles_url', 'route'));
}
/**
@ -297,7 +305,7 @@ class Users extends Controller
$column = $request['column'];
$value = $request['value'];
if (!empty($column) && !empty($value)) {
if (! empty($column) && ! empty($value)) {
switch ($column) {
case 'id':
$user = User::find((int) $value);
@ -310,14 +318,40 @@ class Users extends Controller
}
$data = $user;
} elseif (!empty($column) && empty($value)) {
} elseif (! empty($column) && empty($value)) {
$data = trans('validation.required', ['attribute' => $column]);
}
return response()->json([
'errors' => ($user) ? false : true,
'success' => ($user) ? true : false,
'data' => $data
'data' => $data,
]);
}
/**
* Process request for reinviting the specified resource.
*
* @param User $user
*
* @return Response
*/
public function invite(User $user)
{
$response = $this->ajaxDispatch(new CreateInvitation($user, company()));
$response['redirect'] = route('users.index');
if ($response['success']) {
$message = trans('messages.success.invited', ['type' => trans_choice('general.users', 1)]);
flash($message)->success();
} else {
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
}