![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/dceprojects.corals.io/Corals/core/User/Services/ |
<?php namespace Corals\User\Services; use Corals\Foundation\Services\BaseServiceClass; use Corals\User\Facades\TwoFactorAuth; use Corals\User\Http\Requests\UserRequest; class UserService extends BaseServiceClass { protected $excludedRequestParams = [ 'picture', 'channel', 'two_factor_auth_enabled', 'password_confirmation', 'roles', 'clear', 'confirmed', 'send_login_details', ]; public function getRequestData($request) { $data = $request->except($this->excludedRequestParams); if ( ($request->has('confirmed') || !\Settings::get('confirm_user_registration_email', false)) && is_null(optional($this->model)->confirmed_at) ) { $data['confirmed_at'] = now(); } elseif (!$request->has('confirmed') && \Settings::get('confirm_user_registration_email', false)) { $data['confirmed_at'] = null; } if (empty($data['password'])) { unset($data['password']); } return $data; } public function setTwoFactorAuthDetails(UserRequest $request) { if (!TwoFactorAuth::isActive()) { return; } if (!TwoFactorAuth::isRegistered($this->model)) { TwoFactorAuth::register($this->model, $request); } } public function handleUserPicture(UserRequest $request) { if ($request->has('clear') || $request->hasFile('picture')) { $this->model->clearMediaCollection('user-picture'); } if ($request->hasFile('picture') && !$request->has('clear')) { $this->model->addMedia($request->file('picture')) ->withCustomProperties(['root' => 'user_' . $this->model->hashed_id]) ->toMediaCollection('user-picture'); } } public function handleUserRoles(UserRequest $request, $rolesListForLoggedInUser) { $rolesFormRequest = $request->roles; $loggedInUserRoles = $rolesListForLoggedInUser; $updatedUserRoles = $this->model->roles->pluck('label', 'id'); $rolesToInsert = array_merge(array_keys(($updatedUserRoles->diff($loggedInUserRoles))->toArray()), $rolesFormRequest); $this->model->syncRoles($rolesToInsert); } public function postStore($request, &$additionalData) { if ($request->has('send_login_details')) { event('notifications.user.send_login_details', ['user' => $user, 'password' => $request->get('password')]); } } public function postStoreUpdate($request, &$additionalData) { $rolesListForLoggedInUser = $additionalData['roles_for_logged_in_user']; $user = $this->model; $this->setTwoFactorAuthDetails($request); $this->handleUserPicture($request); $this->handleUserRoles($request, $rolesListForLoggedInUser); $user->positions()->sync($request->input('positions', [])); } /** * @param $request * @param $user * @throws \Exception */ public function destroy($request, $user) { if (user()->id == $user->id) { throw new \Exception(trans('User::exceptions.invalid_destroy_user')); } $user->delete(); } }