1031 lines
32 KiB
PHP
1031 lines
32 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers\Pages;
|
|
|
|
use App\Http\Controllers\Helpers\Permissions\UserPermissions;
|
|
use App\Http\Controllers\LoginController;
|
|
use Hypervel\Http\Request;
|
|
use Hypervel\Support\Facades\Auth;
|
|
use App\Models\User;
|
|
use Hypervel\Support\Facades\Cache;
|
|
use Hypervel\Support\Facades\Response;
|
|
use App\Enums\UserTypes;
|
|
use App\Models\Market\Store;
|
|
|
|
use App\Http\Controllers\Pages\PageController;
|
|
use App\Enums\UserActions;
|
|
use Hypervel\Support\Facades\Hash;
|
|
|
|
use Hypervel\Support\Facades\Redis;
|
|
|
|
class UserModifyAdminPageController
|
|
{
|
|
|
|
use PageResponses_UserModify;
|
|
|
|
private static function getUserbyHashkey($hashkey)
|
|
{
|
|
if (!$hashkey || !Auth::check()) {
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
$User = User::where('hashkey', $hashkey)->first();
|
|
} catch (\Throwable $th) {
|
|
return false;
|
|
}
|
|
|
|
if (!$User) {
|
|
return false;
|
|
}
|
|
|
|
return $User;
|
|
}
|
|
public static function getDetailsbyHashkey($hashkey): bool|array
|
|
{
|
|
$User = self::getUserbyHashkey($hashkey);
|
|
if (!$User) {
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
// $UserDetail = $User->map(function ($detail) {
|
|
// return [
|
|
// 'hashkey' => $detail->hashkey,
|
|
// 'mobile_number' => $detail->mobile_number,
|
|
// 'total_balance' => $detail->total_balance,
|
|
// 'active' => $detail->active,
|
|
// 'parent' => $detail->parent ? $detail->parent->name : null,
|
|
// 'nickname' => $detail->nickname,
|
|
// 'fullname' => $detail->fullname,
|
|
// 'name' => $detail->name,
|
|
// 'username' => $detail->username,
|
|
// 'acct_type' => $detail->acct_type,
|
|
// 'modified' => $detail->updated_at,
|
|
// 'total_credit' => $detail->total_credit,
|
|
// 'created' => $detail->created_at,
|
|
// // 'children' => $detail->getAllDescendants,
|
|
// ];
|
|
// });
|
|
|
|
$UserDetail = [
|
|
'hashkey' => $User->hashkey,
|
|
'mobile_number' => $User->mobile_number,
|
|
'total_balance' => $User->total_balance,
|
|
'active' => $User->active,
|
|
'parent' => $User->parent ? $User->parent->name : null,
|
|
'parent_hashkey' => $User->parent ? $User->parent->hashkey : null,
|
|
'nickname' => $User->nickname,
|
|
'fullname' => $User->fullname,
|
|
'name' => $User->name,
|
|
'username' => $User->username,
|
|
'acct_type' => $User->acct_type,
|
|
'modified' => $User->updated_at,
|
|
'total_credit' => $User->total_credit,
|
|
'created' => $User->created_at,
|
|
// 'children' => $User->getAllDescendants, // if you need this later
|
|
'store_hashkey' => Store::where('owner_id', $User->id)->orWhere('manager_id', $User->id)->value('hashkey'),
|
|
'stores' => Store::where('owner_id', $User->id)->orWhere('manager_id', $User->id)->get()->map(fn($s) => [
|
|
'hashkey' => $s->hashkey,
|
|
'name' => $s->name,
|
|
'role' => $s->owner_id === $User->id ? 'owner' : 'manager'
|
|
])
|
|
];
|
|
|
|
$CurrentUserType = Auth::user()->acct_type;
|
|
|
|
|
|
try {
|
|
$UserDetail = $UserDetail->toArray();
|
|
} catch (\Throwable $th) {
|
|
}
|
|
|
|
if ($CurrentUserType !== UserTypes::ULTIMATE) {
|
|
unset($UserDetail['modified']);
|
|
unset($UserDetail['total_credit']);
|
|
unset($UserDetail['fullname']);
|
|
unset($UserDetail['username']);
|
|
}
|
|
|
|
|
|
|
|
|
|
return $UserDetail;
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function getDirectChildrenofTargetUser($hashkey)
|
|
{
|
|
$User = self::getUserbyHashkey($hashkey);
|
|
if (!$User) {
|
|
return false;
|
|
}
|
|
$children = $User->children->map(function ($child) {
|
|
return [
|
|
'hashkey' => $child->hashkey,
|
|
'name' => $child->name,
|
|
'fullname' => $child->fullname,
|
|
'username' => $child->username,
|
|
'mobile_number' => $child->mobile_number,
|
|
'total_balance' => $child->total_balance,
|
|
'acct_type' => $child->acct_type,
|
|
'active' => (bool) $child->active,
|
|
];
|
|
});
|
|
return $children;
|
|
}
|
|
|
|
public function Response_directChildrenofTargetUser(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
$children = self::getDirectChildrenofTargetUser($target_user);
|
|
return PageController::PageResponse($children);
|
|
}
|
|
|
|
public static function getchildrenofTargetUser($hashkey)
|
|
{
|
|
$User = self::getUserbyHashkey($hashkey);
|
|
if (!$User) {
|
|
return false;
|
|
}
|
|
$children = $User;
|
|
$children = $User->getAllDescendants()->map(function ($child) {
|
|
|
|
$parentname = $child->parent->name . '(' . $child->parent->username . ')' . '---' . $child->parent->mobile_number;
|
|
return [
|
|
'mobile_number' => $child->mobile_number,
|
|
'total_balance' => $child->total_balance,
|
|
'acct_type' => $child->acct_type,
|
|
'active' => $child->active,
|
|
'parent' => $parentname,
|
|
'hashkey' => $child->hashkey,
|
|
];
|
|
});
|
|
return $children;
|
|
}
|
|
|
|
|
|
private static function isPermittedthenFindUserorFail(string $hashkey, bool|UserActions $permissionORUserAction)
|
|
{
|
|
if (!$hashkey || !is_string($hashkey)) {
|
|
throw new \Exception('Invalid target user');
|
|
}
|
|
|
|
if (is_bool($permissionORUserAction)) {
|
|
if ($permissionORUserAction === true) {
|
|
return true;
|
|
}
|
|
|
|
if ($permissionORUserAction === false) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
}
|
|
|
|
if (!UserPermissions::isActionPermitted($hashkey, $permissionORUserAction)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
$user = User::where('hashkey', $hashkey)->first();
|
|
if (!$user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
return $user;
|
|
}
|
|
|
|
public static function ToggleUserActive(bool $active, $hashkey, bool $autologout = true)
|
|
{
|
|
if (!$hashkey || !is_string($hashkey)) {
|
|
return false;
|
|
}
|
|
|
|
if ($active) {
|
|
if (!UserPermissions::isUserSetActiveAllowed($hashkey)) {
|
|
return Response::json(['error' => 'Not Allowed'], 403);
|
|
}
|
|
} else {
|
|
if (!UserPermissions::isUserSetInactiveAllowed($hashkey)) {
|
|
return Response::json(['error' => 'Not Allowed'], 403);
|
|
}
|
|
}
|
|
|
|
try {
|
|
$targetUser = User::where('hashkey', $hashkey)->first();
|
|
if (!$targetUser) {
|
|
return Response::json(['error' => 'User not found'], 404);
|
|
}
|
|
// $targetUser->active = false;
|
|
$targetUser->active = $active;
|
|
$targetUser->save();
|
|
if (!$active && $autologout) {
|
|
self::LogoutUser($hashkey);
|
|
}
|
|
|
|
return Response::json(['success' => true], 200);
|
|
|
|
} catch (\Throwable $th) {
|
|
return Response::json(['error' => $th->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
public static function ViewNotes($hashkey)
|
|
{
|
|
|
|
|
|
try {
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
if (!UserPermissions::isUserNotesViewingAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
|
|
return $target_user->notes;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception('Error retrieving notes: ' . $th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function ReplaceNotes(string $hashkey, string $note)
|
|
{
|
|
try {
|
|
if (!UserPermissions::isUserNotesUpdateAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
|
|
$target_user->notes = $note;
|
|
$target_user->save();
|
|
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception('Error updating notes: ' . $th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function DeleteNotes(string $hashkey)
|
|
{
|
|
if (!UserPermissions::isUserNotesDeletionAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
return self::ReplaceNotes($hashkey, '');
|
|
}
|
|
|
|
|
|
public static function ViewExec($hashkey)
|
|
{
|
|
try {
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
if (!UserPermissions::isUserExecViewingAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
return $target_user->exec_command;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception($th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function DeleteExec(string $hashkey)
|
|
{
|
|
if (!UserPermissions::isUserExecDeletionAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
return self::ReplaceExec($hashkey, '');
|
|
}
|
|
|
|
|
|
public static function ReplaceExec(string $hashkey, string $exec)
|
|
{
|
|
try {
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
if (!UserPermissions::isUserExecChangeAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
$target_user->exec_command = $exec;
|
|
$target_user->save();
|
|
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception($th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function UpdateUserDetails(string $hashkey, $details)
|
|
{
|
|
try {
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
if (!UserPermissions::isUserModificationAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
if (isset($details['mobile_number'])) {
|
|
$target_user->mobile_number = LoginController::normalizePhMobile((string) $details['mobile_number']);
|
|
}
|
|
|
|
if (isset($details['nickname'])) {
|
|
$target_user->nickname = $details['nickname'];
|
|
}
|
|
|
|
if (isset($details['name'])) {
|
|
$target_user->name = $details['name'];
|
|
}
|
|
|
|
if (isset($details['username'])) {
|
|
$target_user->username = $details['username'];
|
|
}
|
|
|
|
if (isset($details['fullname'])) {
|
|
$target_user->fullname = $details['fullname'];
|
|
}
|
|
|
|
if (isset($details['type']) && $details['type'] !== '') {
|
|
$target_user->acct_type = $details['type'];
|
|
}
|
|
|
|
if (isset($details['parent']) && $details['parent'] !== '') {
|
|
$parentModel = User::where('hashkey', $details['parent'])->first();
|
|
if ($parentModel) {
|
|
$target_user->parentuid = $parentModel->id;
|
|
}
|
|
}
|
|
|
|
$target_user->save();
|
|
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception($th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function ResetUserPassword(string $hashkey, string $newPassword)
|
|
{
|
|
try {
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
if (!UserPermissions::isUserPasswordChangeAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
$target_user->password = Hash::make($newPassword);
|
|
$target_user->save();
|
|
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception($th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function TransferMyCredit(string $hashkey, float $amount)
|
|
{
|
|
$currentuser = Auth::user();
|
|
if ($amount <= 0) {
|
|
throw new \Exception('Invalid amount');
|
|
}
|
|
|
|
try {
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
$currentUserBalance = $currentuser->total_balance;
|
|
|
|
if ($currentuser->acct_type !== UserTypes::ULTIMATE && $currentUserBalance < $amount) {
|
|
throw new \Exception('Insufficient balance');
|
|
}
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
if (!UserPermissions::isDirectCreditTransfertoUserAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
|
|
$target_user->total_credit += $amount;
|
|
$target_user->save();
|
|
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception($th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function LogoutUser(string $hashkey)
|
|
{
|
|
|
|
$user = self::isPermittedthenFindUserorFail($hashkey, UserActions::ForceLogoutUser);
|
|
if (!$user) {
|
|
throw new \Exception('Error Fetching User');
|
|
}
|
|
|
|
try {
|
|
return \App\Http\Controllers\RemoteLogoutController::remoteLogout($hashkey);
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception($th->getMessage());
|
|
}
|
|
|
|
}
|
|
|
|
public static function ShowUserRoles(string $hashkey)
|
|
{
|
|
$user = self::isPermittedthenFindUserorFail($hashkey, UserActions::UserAllowedtoViewOtherUserRoles);
|
|
if (!$user) {
|
|
throw new \Exception('Error Fetching User');
|
|
}
|
|
|
|
$roles = UserPermissions::getUserRoles($user->id);
|
|
|
|
$formatted = [];
|
|
|
|
foreach ($roles as $role) {
|
|
// $role is already an instance of UserActions
|
|
if ($role instanceof UserActions) {
|
|
$formatted[] = [
|
|
'value' => $role->value,
|
|
'name' => $role->name
|
|
];
|
|
} else {
|
|
$formatted[] = [
|
|
'value' => (string) $role,
|
|
'name' => 'UNKNOWN'
|
|
];
|
|
}
|
|
}
|
|
|
|
return $formatted;
|
|
}
|
|
|
|
public static function ShowAllRoles()
|
|
{
|
|
$allowed = UserPermissions::isActionPermitted(Auth::id(), UserActions::UserAllowedtoViewAllRoles);
|
|
if (!$allowed) {
|
|
throw new \Exception('Not Allowed');
|
|
}
|
|
|
|
return array_map(function (UserActions $role) {
|
|
return [
|
|
'value' => $role->value,
|
|
'name' => $role->name
|
|
];
|
|
}, UserActions::cases());
|
|
}
|
|
|
|
public static function ChangeUserRoles(string $target_user, array $new_roles)
|
|
{
|
|
// 1) Permission + load
|
|
$user = self::isPermittedthenFindUserorFail(
|
|
$target_user,
|
|
permissionORUserAction: UserActions::UserAllowedtoChangeAnotherUserRoles
|
|
);
|
|
|
|
// 2) Normalize all incoming roles to enums (accept enum, backing value, or case name)
|
|
$new_roles = array_map(fn($r) => UserPermissions::normalizeRole($r), $new_roles);
|
|
|
|
// 3) Defaults for this user type (fix: acct_type, not type)
|
|
$default_roles_map = UserPermissions::roles();
|
|
$acctType = $user->acct_type; // cast to enum in your model
|
|
$default_roles = $default_roles_map[$acctType->value] ?? []; // array of UserActions
|
|
|
|
// 4) Remove any newly granted roles from denied_roles
|
|
$denied_roles = $user->denied_roles ?? []; // expect UserActions[] via your cast
|
|
$denied_roles = array_values(array_filter(
|
|
$denied_roles,
|
|
fn(UserActions $r) => !in_array($r, $new_roles, true)
|
|
));
|
|
$user->denied_roles = $denied_roles;
|
|
|
|
// 5) Clean additional_roles to only those present in new_roles
|
|
$additional_roles = $user->additional_roles ?? []; // expect UserActions[] via your cast
|
|
// use strict comparison instead of array_intersect (which is non-strict)
|
|
$additional_roles = array_values(array_filter(
|
|
$additional_roles,
|
|
fn(UserActions $r) => in_array($r, $new_roles, true)
|
|
));
|
|
|
|
// 6) Add roles that are in new_roles but NOT in defaults into additional_roles
|
|
foreach ($new_roles as $role) {
|
|
if (!in_array($role, $default_roles, true) && !in_array($role, $additional_roles, true)) {
|
|
$additional_roles[] = $role;
|
|
}
|
|
}
|
|
|
|
// 7) Save
|
|
$user->additional_roles = $additional_roles; // your cast will persist backing values
|
|
$user->save();
|
|
|
|
return $user;
|
|
}
|
|
|
|
public function ChangeUserParent(string $targetUser, string|int $parent)
|
|
{
|
|
$targetUserModel = self::isPermittedthenFindUserorFail(
|
|
$targetUser,
|
|
permissionORUserAction: UserActions::ChangeAnotherUsersParent
|
|
);
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// Resolve parent user
|
|
if (is_string($parent)) {
|
|
$parentModel = User::where('hashkey', $parent)->first();
|
|
if (empty($parentModel)) {
|
|
throw new \Exception("Parent user not found by hashkey.");
|
|
}
|
|
} else {
|
|
$parentModel = User::findOrFail($parent);
|
|
}
|
|
|
|
$targetUserModel->parentuid = $parentModel->id;
|
|
$targetUserModel->save();
|
|
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
|
|
throw new \Exception($th->getMessage(), 1);
|
|
|
|
}
|
|
}
|
|
|
|
public static function DeleteUser(string $hashkey)
|
|
{
|
|
try {
|
|
if (!UserPermissions::isUserDeletionAllowed($hashkey)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
$target_user = User::where('hashkey', $hashkey)->first();
|
|
|
|
if (!$target_user) {
|
|
throw new \Exception('User not found');
|
|
}
|
|
|
|
// Optional: Logout the user before deleting
|
|
self::LogoutUser($hashkey);
|
|
|
|
$target_user->delete();
|
|
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception('Error deleting user: ' . $th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function DetachStoreFromUser(string $userHash, string $storeHash)
|
|
{
|
|
try {
|
|
$user = User::where('hashkey', $userHash)->first();
|
|
$store = Store::where('hashkey', $storeHash)->first();
|
|
|
|
if (!$user || !$store) {
|
|
throw new \Exception('User or Store not found');
|
|
}
|
|
|
|
if (!UserPermissions::isUserModificationAllowed($userHash)) {
|
|
throw new \Exception('Permission Denied');
|
|
}
|
|
|
|
if ($store->owner_id === $user->id) {
|
|
$store->owner_id = null;
|
|
}
|
|
|
|
if ($store->manager_id === $user->id) {
|
|
$store->manager_id = null;
|
|
}
|
|
|
|
$store->save();
|
|
return true;
|
|
|
|
} catch (\Throwable $th) {
|
|
throw new \Exception('Error detaching store: ' . $th->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function ExtendUserSessions(string $hashkey)
|
|
{
|
|
$user = self::isPermittedthenFindUserorFail($hashkey, UserActions::UserAllowedtoChangeAnotherUserRoles); // Reuse permission for now or add a new one
|
|
|
|
$sessions = Redis::smembers("user_sessions:{$hashkey}");
|
|
if (empty($sessions)) {
|
|
return false;
|
|
}
|
|
|
|
$results = [];
|
|
foreach ($sessions as $sessionId) {
|
|
$results[$sessionId] = \App\Http\Controllers\LoginController::setSessiontoKeepAlive($sessionId);
|
|
}
|
|
|
|
return $results;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
trait PageResponses_UserModify
|
|
{
|
|
|
|
public function Response_UserDetails(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
|
|
$user_details = self::getDetailsbyHashkey($target_user);
|
|
|
|
return PageController::PageResponse($user_details);
|
|
}
|
|
|
|
|
|
public function Response_childrenofTargetUser(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
|
|
$user_details = self::getchildrenofTargetUser($target_user);
|
|
return PageController::PageResponse($user_details);
|
|
}
|
|
|
|
public function Response_EnableUser(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
return self::ToggleUserActive(true, $target_user);
|
|
}
|
|
|
|
public function Response_DisableUser(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
return self::ToggleUserActive(false, $target_user);
|
|
}
|
|
|
|
public function Response_ViewNotes(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
|
|
try {
|
|
$notes = self::ViewNotes($target_user);
|
|
} catch (\Throwable $th) {
|
|
//throw $th;
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
|
|
// if ($notes === false) {
|
|
// return response()->json(data: 'User not found', 404);
|
|
// }
|
|
|
|
return response()->raw($notes);
|
|
}
|
|
|
|
public function Response_ReplaceNotes(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
$newnotecontent = $request->input('newnotecontent');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
try {
|
|
$success = self::ReplaceNotes($target_user, $newnotecontent);
|
|
} catch (\Throwable $th) {
|
|
//throw $th;
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
|
|
// if (!$success) {
|
|
// return response()->json('User not found or update failed', 400);
|
|
// }
|
|
|
|
return response()->json(true, 200);
|
|
}
|
|
|
|
public function Response_DeleteNotes(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
|
|
try {
|
|
$notes = self::DeleteNotes($target_user);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
|
|
|
|
if ($notes === false) {
|
|
return response()->json('Error', 404);
|
|
}
|
|
|
|
return response()->json(true, 200);
|
|
}
|
|
|
|
|
|
public function Response_ViewExec(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
try {
|
|
$exec = self::ViewExec($target_user);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
|
|
|
|
if ($exec === false) {
|
|
return response()->json('User not found', 404);
|
|
}
|
|
|
|
return response()->raw($exec);
|
|
}
|
|
|
|
|
|
public function Response_ReplaceExec(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
$newexeccontent = $request->input('newexeccontent');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
try {
|
|
$success = self::ReplaceExec($target_user, $newexeccontent);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
|
|
|
|
if (!$success) {
|
|
return response()->json('User not found or update failed', 400);
|
|
}
|
|
|
|
return response()->json(true, 200);
|
|
}
|
|
|
|
public function Response_DeleteExec(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
try {
|
|
$notes = self::DeleteExec($target_user);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
return response()->json(true, 200);
|
|
}
|
|
|
|
public function Response_DetachStore(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
$store_hash = $request->input('store_hash');
|
|
|
|
if (!$target_user || !$store_hash) {
|
|
return Response::json(['success' => false, 'message' => 'Missing parameters'], 400);
|
|
}
|
|
|
|
try {
|
|
$success = self::DetachStoreFromUser($target_user, $store_hash);
|
|
return Response::json(['success' => $success], 200);
|
|
} catch (\Throwable $th) {
|
|
return Response::json(['success' => false, 'message' => $th->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function Response_UpdateUserDetails(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
$details = $request->input('details');
|
|
if (!$target_user || !is_string($target_user) || !is_array($details)) {
|
|
return Response::json(['success' => false], 404);
|
|
}
|
|
try {
|
|
$success = self::UpdateUserDetails($target_user, $details);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
|
|
if (!$success) {
|
|
return response()->json('User not found or update failed', 400);
|
|
}
|
|
|
|
return response()->json(true, 200);
|
|
}
|
|
|
|
public function Response_ResetUserPassword(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
$newPassword = $request->input('user_new_password');
|
|
if (!$target_user || !is_string($target_user) || !$newPassword || !is_string($newPassword)) {
|
|
return Response::json(['success' => false], 404);
|
|
}
|
|
try {
|
|
$success = self::ResetUserPassword($target_user, $newPassword);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
|
|
if (!$success) {
|
|
return response()->json('User not found or update failed', 400);
|
|
}
|
|
|
|
return response()->json(true, 200);
|
|
}
|
|
|
|
public function Response_LogoutUser(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
try {
|
|
$user = self::LogoutUser($target_user);
|
|
if (!$user) {
|
|
return response()->json('Unable to Logout User!', 400);
|
|
}
|
|
return response()->json(true, 200);
|
|
} catch (\Throwable $th) {
|
|
return response()->json('Unable to Logout User ' . $th->getMessage(), 400);
|
|
}
|
|
|
|
}
|
|
|
|
public function Response_UserRoles(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
try {
|
|
$roles = self::ShowUserRoles($target_user);
|
|
return response()->json($roles, 200);
|
|
} catch (\Throwable $th) {
|
|
return response()->json('Unable fetch User Roles' . $th->getMessage(), 400);
|
|
}
|
|
}
|
|
|
|
public function Response_AllRoles()
|
|
{
|
|
try {
|
|
$roles = self::ShowAllRoles();
|
|
return response()->json($roles, 200);
|
|
} catch (\Throwable $th) {
|
|
return response()->json('Error' . $th->getMessage(), 400);
|
|
}
|
|
}
|
|
|
|
public function Response_ChangeUserRoles(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
$new_roles = $request->input('roles');
|
|
|
|
try {
|
|
$success = self::ChangeUserRoles($target_user, $new_roles);
|
|
if (!$success) {
|
|
return response()->json('Error', 500);
|
|
}
|
|
return response()->json(true, 200);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
}
|
|
|
|
public function Response_ChangeUserParent(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
$parent = $request->input('parent');
|
|
|
|
try {
|
|
$success = self::ChangeUserParent($target_user, $parent);
|
|
if (!$success) {
|
|
return response()->json('Error', 500);
|
|
}
|
|
return response()->json(true, 200);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// public function Response_TransferMyCredit(Request $request)
|
|
// {
|
|
// $target_user = $request->input('target_user');
|
|
// $amount = $request->input('amount');
|
|
// if (!$target_user || !is_string($target_user) || !$amount || !is_numeric($amount)) {
|
|
// return Response::json(false, 404);
|
|
// }
|
|
// try {
|
|
// $success = self::TransferMyCredit($target_user, (float)$amount);
|
|
// } catch (\Throwable $th) {
|
|
// return response()->json($th->getMessage(), 500);
|
|
// }
|
|
|
|
// if (!$success) {
|
|
// return response()->json('User not found or transfer failed', 400);
|
|
// }
|
|
|
|
// return response()->json(true, 200);
|
|
// }
|
|
|
|
public function Response_DeleteUser(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(false, 404);
|
|
}
|
|
try {
|
|
$success = self::DeleteUser($target_user);
|
|
return response()->json($success, 200);
|
|
} catch (\Throwable $th) {
|
|
return response()->json($th->getMessage(), 500);
|
|
}
|
|
}
|
|
|
|
public function Response_ExtendUserSessions(Request $request)
|
|
{
|
|
$target_user = $request->input('target_user');
|
|
if (!$target_user || !is_string($target_user)) {
|
|
return Response::json(['success' => false], 404);
|
|
}
|
|
|
|
try {
|
|
$results = self::ExtendUserSessions($target_user);
|
|
if ($results === false) {
|
|
return Response::json(['success' => false, 'message' => 'No active sessions found for this user.'], 404);
|
|
}
|
|
return Response::json(['success' => true, 'data' => $results], 200);
|
|
} catch (\Throwable $th) {
|
|
return Response::json(['success' => false, 'message' => $th->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Add This Controls Later At User Modify Blade
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/disableuser', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_place_bet', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_set_notes', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_set_exec', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_last30DaysAmountPrizes_Report', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_request_credit', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/updateuserdetails', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/resetuserpassword', 'GET', $IsUserUltimate);
|
|
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_logout_user', 'GET', $IsUserUltimate);
|