validated('permissions'))); $siteId = AdminUser::defaultAdminSiteId(); $codes = []; foreach ($slugs as $slug) { $codes = array_merge($codes, AdminPermissionBridge::menuActionCodesForLegacy($slug)); } $codes = array_values(array_unique($codes)); $menuActionIds = DB::table('admin_menu_actions') ->whereIn('permission_code', $codes) ->where('status', 1) ->pluck('id') ->all(); DB::transaction(function () use ($admin_user, $siteId, $menuActionIds): void { DB::table('admin_user_menu_actions') ->where('admin_user_id', $admin_user->id) ->where(function ($q) use ($siteId): void { $q->where('site_id', $siteId)->orWhereNull('site_id'); }) ->delete(); $now = now(); foreach ($menuActionIds as $mid) { DB::table('admin_user_menu_actions')->insert([ 'admin_user_id' => $admin_user->id, 'site_id' => $siteId, 'menu_action_id' => (int) $mid, 'granted_at' => $now, ]); } }); $admin_user->load('roles'); return ApiResponse::success([ 'id' => (int) $admin_user->id, 'username' => $admin_user->username, 'nickname' => $admin_user->name, 'roles' => $admin_user->adminRoleSlugs(), 'direct_permissions' => $admin_user->directLegacyPermissionSlugs(), 'effective_permissions' => $admin_user->adminPermissionSlugs(), ]); } }