Compare commits
139 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1837da4508 | |||
| 4637accb51 | |||
| 74f067d893 | |||
| 43773954cd | |||
| 30cafef9f2 | |||
| e1a6b441d7 | |||
| 251f2d82b3 | |||
| e905550778 | |||
| adee99db34 | |||
| eda2eb2283 | |||
| a7123a04ba | |||
| 8971cc4b8b | |||
| bca6dd41d2 | |||
| 23c1d664fe | |||
| c891342fdb | |||
| 221c4eeb0c | |||
| bbb1fbfbe8 | |||
| 5a874a90ac | |||
| 1c14c2fdef | |||
| 73a038afd4 | |||
| 4d55765e28 | |||
| 2b43f3cb84 | |||
| 52c4885335 | |||
| aa5fe52e89 | |||
| ce107dd688 | |||
| 72affd7a5b | |||
| ba4c51dd68 | |||
| 294fb1f774 | |||
| a846afe733 | |||
| 5fb3cea0bb | |||
| 4ae89c23cd | |||
| 3d32fe662b | |||
| 468674a517 | |||
| ebe4354a85 | |||
| 829b560794 | |||
| f97a15c5c3 | |||
| 25fcf523e3 | |||
| c1be94c4ad | |||
| 3a05d72124 | |||
| 7ec44e46ce | |||
| 060b17df01 | |||
| 74c78d7577 | |||
| 1ef0c1adac | |||
| c2e649e2bf | |||
| 196db9718e | |||
| 9f5b264e04 | |||
| 3825f5fb61 | |||
| e60dbc883c | |||
| bbbfa91db9 | |||
| 5ec8e2da66 | |||
| 9e59bd5687 | |||
| 1d26ccac4e | |||
| 0e2526f627 | |||
| dd9e9c7a6d | |||
| e19922abd0 | |||
| d27bde6047 | |||
| 61f76dedc6 | |||
| 06737f45ad | |||
| 65e8765bdd | |||
| c6a0212384 | |||
| e03614d91b | |||
| b82770d0a8 | |||
| 55e1326164 | |||
| b0aff68c8b | |||
| 6a99855c8c | |||
| 665aa6eb23 | |||
| 42caacbaf9 | |||
| 3531256c3f | |||
| 9a0db72eb4 | |||
| e11a42cf68 | |||
| 114769c2d9 | |||
| 9594596b8a | |||
| 69cf697aa3 | |||
| 45dbe5cb77 | |||
| a1ff35f6ce | |||
| 077a6949e2 | |||
| 44022f07ca | |||
| 30c1e1e86a | |||
| 9a90813877 | |||
| 1113218c6c | |||
| 2556c80250 | |||
| 8f8a5c639b | |||
| 9e9c37c1e8 | |||
| 6cbdbcb1f1 | |||
| c8835bf5db | |||
| 6dfedac7a7 | |||
| 83794eaf33 | |||
| bd1f43f9ee | |||
| 66ffe21ce2 | |||
| f2e86b7d30 | |||
| 5251e6787d | |||
| 856aee0a72 | |||
| 6b4c71f966 | |||
| dd6d040da5 | |||
| 203b60383f | |||
| 61ced0b221 | |||
| ae7675fee0 | |||
| 66ed26fbf9 | |||
| 98662c2a77 | |||
| 7099358985 | |||
| 9a706b3e3e | |||
| 71c9b03779 | |||
| dc7b9315b5 | |||
| 6c17b141db | |||
| 5d2cca855e | |||
| 61e10be04d | |||
| 20d5587851 | |||
| d8eccf03f1 | |||
| 6e40b58dc5 | |||
| b8882fa00e | |||
| af337b7018 | |||
| f60267d208 | |||
| a0c844f4f6 | |||
| 7b84b92e72 | |||
| ce338c632d | |||
| d9f70c16f7 | |||
| d0299de898 | |||
| 9380c9ec81 | |||
| 941582ac2a | |||
| 04560b4475 | |||
| 0b30ad0da2 | |||
| cb6ea2c6fb | |||
| 89a5bbb10e | |||
| 2f59bb74cd | |||
| 6c6a3649ea | |||
| 05b97db747 | |||
| 543e4c0666 | |||
| e28619f769 | |||
| 4d8c2d3f4e | |||
| f53eeb8b33 | |||
| aba6d9b338 | |||
| cd5bef414c | |||
| 4f2d2ae4b8 | |||
| 1bd0ab7389 | |||
| 8799276c6e | |||
| 672aabf4ac | |||
| 796d6909d5 | |||
| e28ad50bec | |||
| 713ce7836f |
+11
-1
@@ -3115,7 +3115,8 @@
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/23613427?v=4",
|
||||
"profile": "https://github.com/bryanlopezinc",
|
||||
"contributions": [
|
||||
"code"
|
||||
"code",
|
||||
"test"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -3126,6 +3127,15 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Tyree",
|
||||
"name": "Matt Tyree",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5395363?v=4",
|
||||
"profile": "https://github.com/Tyree",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ jobs:
|
||||
# https://github.com/docker/build-push-action
|
||||
- name: Build and push 'snipe-it' image
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile.alpine
|
||||
|
||||
@@ -73,7 +73,7 @@ jobs:
|
||||
# https://github.com/docker/build-push-action
|
||||
- name: Build and push 'snipe-it' image
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
|
||||
@@ -27,6 +27,7 @@ jobs:
|
||||
php-version:
|
||||
- "8.1"
|
||||
- "8.2"
|
||||
- "8.3"
|
||||
|
||||
name: PHP ${{ matrix.php-version }}
|
||||
|
||||
|
||||
+2
-1
@@ -444,10 +444,11 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.corelight.com/"><img src="https://avatars.githubusercontent.com/u/1496725?v=4?s=110" width="110px;" alt="i_virus"/><br /><sub><b>i_virus</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=chandanchowdhury" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/gitgrimbo"><img src="https://avatars.githubusercontent.com/u/1020541?v=4?s=110" width="110px;" alt="Paul Grime"/><br /><sub><b>Paul Grime</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=gitgrimbo" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://leeporte.co.uk"><img src="https://avatars.githubusercontent.com/u/922815?v=4?s=110" width="110px;" alt="Lee Porte"/><br /><sub><b>Lee Porte</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=LeePorte" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bryanlopezinc"><img src="https://avatars.githubusercontent.com/u/23613427?v=4?s=110" width="110px;" alt="BRYAN "/><br /><sub><b>BRYAN </b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=bryanlopezinc" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bryanlopezinc"><img src="https://avatars.githubusercontent.com/u/23613427?v=4?s=110" width="110px;" alt="BRYAN "/><br /><sub><b>BRYAN </b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=bryanlopezinc" title="Code">💻</a> <a href="https://github.com/snipe/snipe-it/commits?author=bryanlopezinc" title="Tests">⚠️</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/U-H-T"><img src="https://avatars.githubusercontent.com/u/64061710?v=4?s=110" width="110px;" alt="U-H-T"/><br /><sub><b>U-H-T</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=U-H-T" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tyree"><img src="https://avatars.githubusercontent.com/u/5395363?v=4?s=110" width="110px;" alt="Matt Tyree"/><br /><sub><b>Matt Tyree</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=Tyree" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -17,22 +17,24 @@ class ActionlogController extends Controller
|
||||
|
||||
$disk = config('filesystems.default');
|
||||
switch (config("filesystems.disks.$disk.driver")) {
|
||||
case 's3':
|
||||
$file = 'private_uploads/signatures/'.$filename;
|
||||
return redirect()->away(Storage::disk($disk)->temporaryUrl($file, now()->addMinutes(5)));
|
||||
default:
|
||||
$this->authorize('view', \App\Models\Asset::class);
|
||||
$file = config('app.private_uploads').'/signatures/'.$filename;
|
||||
$filetype = Helper::checkUploadIsImage($file);
|
||||
case 's3':
|
||||
$file = 'private_uploads/signatures/'.$filename;
|
||||
return redirect()->away(Storage::disk($disk)->temporaryUrl($file, now()->addMinutes(5)));
|
||||
default:
|
||||
$this->authorize('view', \App\Models\Asset::class);
|
||||
$file = config('app.private_uploads').'/signatures/'.$filename;
|
||||
$filetype = Helper::checkUploadIsImage($file);
|
||||
|
||||
$contents = file_get_contents($file, false, stream_context_create(['http' => ['ignore_errors' => true]]));
|
||||
if ($contents === false) {
|
||||
Log::warning('File '.$file.' not found');
|
||||
return false;
|
||||
} else {
|
||||
return Response::make($contents)->header('Content-Type', $filetype);
|
||||
}
|
||||
$contents = file_get_contents($file, false, stream_context_create(['http' => ['ignore_errors' => true]]));
|
||||
if ($contents === false) {
|
||||
Log::warning('File '.$file.' not found');
|
||||
return false;
|
||||
} else {
|
||||
return Response::make($contents)->header('Content-Type', $filetype);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getStoredEula($filename){
|
||||
$this->authorize('view', \App\Models\Asset::class);
|
||||
$file = config('app.private_uploads').'/eula-pdfs/'.$filename;
|
||||
|
||||
@@ -13,6 +13,8 @@ use App\Http\Transformers\SelectlistTransformer;
|
||||
use App\Http\Transformers\UsersTransformer;
|
||||
use App\Models\Actionlog;
|
||||
use App\Models\Asset;
|
||||
use App\Models\Accessory;
|
||||
use App\Models\Consumable;
|
||||
use App\Models\License;
|
||||
use App\Models\User;
|
||||
use App\Notifications\CurrentInventory;
|
||||
@@ -31,7 +33,7 @@ class UsersController extends Controller
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v4.0]
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return array
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
@@ -203,9 +205,6 @@ class UsersController extends Controller
|
||||
$users->where('autoassign_licenses', '=', $request->input('autoassign_licenses'));
|
||||
}
|
||||
|
||||
if ($request->filled('location_id') != '') {
|
||||
$users = $users->UserLocation($request->input('location_id'), $request->input('search'));
|
||||
}
|
||||
|
||||
if (($request->filled('deleted')) && ($request->input('deleted') == 'true')) {
|
||||
$users = $users->onlyTrashed();
|
||||
@@ -362,7 +361,7 @@ class UsersController extends Controller
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v4.0]
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return array | \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function store(SaveUserRequest $request)
|
||||
{
|
||||
@@ -409,7 +408,7 @@ class UsersController extends Controller
|
||||
*
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return array | \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
@@ -432,7 +431,7 @@ class UsersController extends Controller
|
||||
* @since [v4.0]
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function update(SaveUserRequest $request, $id)
|
||||
{
|
||||
@@ -517,18 +516,16 @@ class UsersController extends Controller
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v4.0]
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function destroy(DeleteUserRequest $request, $id)
|
||||
{
|
||||
$this->authorize('delete', User::class);
|
||||
$user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed()->find($id);
|
||||
|
||||
$this->authorize('delete', $user);
|
||||
if ($user = User::withTrashed()->find($id)) {
|
||||
|
||||
$this->authorize('delete', $user);
|
||||
|
||||
if ($user) {
|
||||
|
||||
if ($user->delete()) {
|
||||
|
||||
// Remove the user's avatar if they have one
|
||||
@@ -542,11 +539,12 @@ class UsersController extends Controller
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.delete')));
|
||||
}
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.error.delete')));
|
||||
|
||||
}
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found', compact('id'))));
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found')));
|
||||
|
||||
}
|
||||
|
||||
@@ -556,7 +554,7 @@ class UsersController extends Controller
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v3.0]
|
||||
* @param $userId
|
||||
* @return string JSON
|
||||
* @return array | \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function assets(Request $request, $id)
|
||||
{
|
||||
@@ -629,14 +627,14 @@ class UsersController extends Controller
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v3.0]
|
||||
* @param $userId
|
||||
* @return string JSON
|
||||
* @return array | \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function consumables(Request $request, $id)
|
||||
{
|
||||
$this->authorize('view', User::class);
|
||||
$this->authorize('view', Consumable::class);
|
||||
$user = User::findOrFail($id);
|
||||
$this->authorize('update', $user);
|
||||
$this->authorize('view', $user);
|
||||
$consumables = $user->consumables;
|
||||
return (new ConsumablesTransformer)->transformConsumables($consumables, $consumables->count(), $request);
|
||||
}
|
||||
@@ -647,7 +645,7 @@ class UsersController extends Controller
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v4.6.14]
|
||||
* @param $userId
|
||||
* @return string JSON
|
||||
* @return array
|
||||
*/
|
||||
public function accessories($id)
|
||||
{
|
||||
@@ -666,7 +664,7 @@ class UsersController extends Controller
|
||||
* @author [N. Mathar] [<snipe@snipe.net>]
|
||||
* @since [v5.0]
|
||||
* @param $userId
|
||||
* @return string JSON
|
||||
* @return array | \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function licenses($id)
|
||||
{
|
||||
@@ -729,7 +727,7 @@ class UsersController extends Controller
|
||||
* @author [Juan Font] [<juanfontalonso@gmail.com>]
|
||||
* @since [v4.4.2]
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return array
|
||||
*/
|
||||
public function getCurrentUserInfo(Request $request)
|
||||
{
|
||||
@@ -742,12 +740,14 @@ class UsersController extends Controller
|
||||
* @author [E. Taylor] [<dev@evantaylor.name>]
|
||||
* @param int $userId
|
||||
* @since [v6.0.0]
|
||||
* @return JsonResponse
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function restore($userId = null)
|
||||
public function restore($userId)
|
||||
{
|
||||
$this->authorize('delete', User::class);
|
||||
|
||||
if ($user = User::withTrashed()->find($userId)) {
|
||||
|
||||
$this->authorize('delete', $user);
|
||||
|
||||
if ($user->deleted_at == '') {
|
||||
@@ -766,8 +766,6 @@ class UsersController extends Controller
|
||||
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.restored')), 200);
|
||||
}
|
||||
|
||||
// Check validation to make sure we're not restoring a user with the same username as an existing user
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, $user->getErrors()));
|
||||
}
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found')), 200);
|
||||
|
||||
@@ -288,7 +288,7 @@ class AssetModelsController extends Controller
|
||||
public function show($modelId = null)
|
||||
{
|
||||
$this->authorize('view', AssetModel::class);
|
||||
$model = AssetModel::withTrashed()->withCount('assets')->find($modelId);
|
||||
$model = AssetModel::withTrashed()->find($modelId);
|
||||
|
||||
if (isset($model->id)) {
|
||||
return view('models/view', compact('model'));
|
||||
|
||||
@@ -427,10 +427,6 @@ class LoginController extends Controller
|
||||
return redirect()->route('two-factor')->with('error', trans('auth/message.two_factor.code_required'));
|
||||
}
|
||||
|
||||
if (! $request->has('two_factor_secret')) { // TODO this seems almost the same as above?
|
||||
return redirect()->route('two-factor')->with('error', 'Two-factor code is required.');
|
||||
}
|
||||
|
||||
$user = Auth::user();
|
||||
$secret = $request->input('two_factor_secret');
|
||||
|
||||
@@ -439,7 +435,7 @@ class LoginController extends Controller
|
||||
$user->saveQuietly();
|
||||
$request->session()->put('2fa_authed', $user->id);
|
||||
|
||||
return redirect()->route('home')->with('success', 'You are logged in!');
|
||||
return redirect()->route('home')->with('success', trans('auth/message.signin.success'));
|
||||
}
|
||||
|
||||
return redirect()->route('two-factor')->with('error', trans('auth/message.two_factor.invalid_code'));
|
||||
@@ -537,7 +533,7 @@ class LoginController extends Controller
|
||||
|
||||
$minutes = round($seconds / 60);
|
||||
|
||||
$message = \Lang::get('auth/message.throttle', ['minutes' => $minutes]);
|
||||
$message = trans('auth/message.throttle', ['minutes' => $minutes]);
|
||||
|
||||
return redirect()->back()
|
||||
->withInput($request->only($this->username(), 'remember'))
|
||||
|
||||
@@ -28,8 +28,8 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function getIndex()
|
||||
{
|
||||
$this->authorize('self.profile');
|
||||
$user = Auth::user();
|
||||
|
||||
return view('account/profile', compact('user'));
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function postIndex(ImageUploadRequest $request)
|
||||
{
|
||||
$this->authorize('self.profile');
|
||||
$user = Auth::user();
|
||||
$user->first_name = $request->input('first_name');
|
||||
$user->last_name = $request->input('last_name');
|
||||
@@ -67,7 +68,7 @@ class ProfileController extends Controller
|
||||
|
||||
|
||||
if ($user->save()) {
|
||||
return redirect()->route('profile')->with('success', trans('account.general.profile_updated'));
|
||||
return redirect()->route('profile')->with('success', trans('account/general.profile_updated'));
|
||||
}
|
||||
|
||||
return redirect()->back()->withInput()->withErrors($user->getErrors());
|
||||
|
||||
@@ -933,7 +933,7 @@ class ReportsController extends Controller
|
||||
$diff = ($asset->purchase_cost - $depreciation);
|
||||
$row[] = Helper::formatCurrencyOutput($depreciation);
|
||||
$row[] = Helper::formatCurrencyOutput($diff);
|
||||
$row[] = ($asset->depreciation) ? $asset->depreciated_date()->format('Y-m-d') : '';
|
||||
$row[] = (($asset->depreciation) && ($asset->depreciated_date())) ? $asset->depreciated_date()->format('Y-m-d') : '';
|
||||
}
|
||||
|
||||
if ($request->filled('checkout_date')) {
|
||||
|
||||
@@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Crypt;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
@@ -106,17 +107,7 @@ class SettingsController extends Controller
|
||||
$start_settings['owner_is_admin'] = false;
|
||||
}
|
||||
|
||||
if ((is_writable(storage_path()))
|
||||
&& (is_writable(storage_path().'/framework'))
|
||||
&& (is_writable(storage_path().'/framework/cache'))
|
||||
&& (is_writable(storage_path().'/framework/sessions'))
|
||||
&& (is_writable(storage_path().'/framework/views'))
|
||||
&& (is_writable(storage_path().'/logs'))
|
||||
) {
|
||||
$start_settings['writable'] = true;
|
||||
} else {
|
||||
$start_settings['writable'] = false;
|
||||
}
|
||||
$start_settings['writable'] = $this->storagePathIsWritable();
|
||||
|
||||
$start_settings['gd'] = extension_loaded('gd');
|
||||
|
||||
@@ -145,6 +136,19 @@ class SettingsController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the app storage path is writable.
|
||||
*/
|
||||
protected function storagePathIsWritable(): bool
|
||||
{
|
||||
return File::isWritable(storage_path()) &&
|
||||
File::isWritable(storage_path('framework')) &&
|
||||
File::isWritable(storage_path('framework/cache')) &&
|
||||
File::isWritable(storage_path('framework/sessions')) &&
|
||||
File::isWritable(storage_path('framework/views')) &&
|
||||
File::isWritable(storage_path('logs'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the first admin user from Setup.
|
||||
*
|
||||
@@ -347,9 +351,9 @@ class SettingsController extends Controller
|
||||
$setting->load_remote = $request->input('load_remote', 0);
|
||||
$setting->thumbnail_max_h = $request->input('thumbnail_max_h');
|
||||
$setting->privacy_policy_link = $request->input('privacy_policy_link');
|
||||
|
||||
$setting->depreciation_method = $request->input('depreciation_method');
|
||||
$setting->dash_chart_type = $request->input('dash_chart_type');
|
||||
$setting->profile_edit = $request->input('profile_edit', 0);
|
||||
|
||||
if ($request->input('per_page') != '') {
|
||||
$setting->per_page = $request->input('per_page');
|
||||
|
||||
@@ -17,7 +17,9 @@ use App\Notifications\WelcomeNotification;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Redirect;
|
||||
use Str;
|
||||
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||
@@ -333,19 +335,24 @@ class UsersController extends Controller
|
||||
*/
|
||||
public function destroy(DeleteUserRequest $request, $id = null)
|
||||
{
|
||||
|
||||
$this->authorize('delete', User::class);
|
||||
|
||||
$user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc');
|
||||
if ($user = User::find($id)) {
|
||||
|
||||
if (($user) && ($user->deleted_at = '')) {
|
||||
// Delete the user
|
||||
$user->delete();
|
||||
return redirect()->route('users.index')->with('success', trans('admin/users/message.success.delete'));
|
||||
$this->authorize('delete', $user);
|
||||
|
||||
if ($user->delete()) {
|
||||
if (Storage::disk('public')->exists('avatars/' . $user->avatar)) {
|
||||
try {
|
||||
Storage::disk('public')->delete('avatars/' . $user->avatar);
|
||||
} catch (\Exception $e) {
|
||||
Log::debug($e);
|
||||
}
|
||||
}
|
||||
return redirect()->route('users.index')->with('success', trans('admin/users/message.success.delete'));
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()->route('users.index')
|
||||
->with('error', trans('admin/users/message.user_not_found', compact('id')));
|
||||
return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -49,10 +49,10 @@ class CheckForTwoFactor
|
||||
|
||||
// Otherwise make sure they're enrolled and show them the 2FA code screen
|
||||
if ((Auth::user()->two_factor_secret != '') && (Auth::user()->two_factor_enrolled == '1')) {
|
||||
return redirect()->route('two-factor')->with('info', 'Please enter your two-factor authentication code.');
|
||||
return redirect()->route('two-factor')->with('info', trans('auth/message.two_factor.enter_two_factor_code'));
|
||||
}
|
||||
|
||||
return redirect()->route('two-factor-enroll')->with('success', 'Please enroll a device in two-factor authentication.');
|
||||
return redirect()->route('two-factor-enroll')->with('success', trans('auth/message.two_factor.please_enroll'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
|
||||
class DeleteUserRequest extends FormRequest
|
||||
@@ -19,18 +19,12 @@ class DeleteUserRequest extends FormRequest
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
return Gate::allows('delete', User::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
public function prepareForValidation(): void
|
||||
{
|
||||
|
||||
$user_to_delete = User::find(request()->route('user'));
|
||||
$user_to_delete = User::withTrashed()->find(request()->route('user'));
|
||||
|
||||
if ($user_to_delete) {
|
||||
$this->merge([
|
||||
@@ -41,30 +35,41 @@ class DeleteUserRequest extends FormRequest
|
||||
'assigned_assets' => $user_to_delete->assets()->count(),
|
||||
'assigned_licenses' => $user_to_delete->licenses()->count(),
|
||||
'assigned_accessories' => $user_to_delete->accessories()->count(),
|
||||
'deleted_at' => $user_to_delete->deleted_at,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'id' => ['exists:users,id'],
|
||||
'user' => Rule::notIn([Auth::user()->id]),
|
||||
'user' => Rule::notIn([auth()->user()->id]),
|
||||
'managed_users' => Rule::in([0]),
|
||||
'managed_locations' => Rule::in([0]),
|
||||
'assigned_assets' => Rule::in([0]),
|
||||
'assigned_licenses' => Rule::in([0]),
|
||||
'assigned_accessories' => Rule::in([0]),
|
||||
'deleted_at' => Rule::in([null]),
|
||||
];
|
||||
}
|
||||
|
||||
public function messages(): array
|
||||
{
|
||||
|
||||
$user_to_delete = User::find(request()->route('user'));
|
||||
$messages = ['id.exists' => trans('admin/users/message.user_not_found')];
|
||||
$user_to_delete = User::withTrashed()->find(request()->route('user'));
|
||||
$messages = [];
|
||||
|
||||
if ($user_to_delete) {
|
||||
|
||||
$messages = array_merge([
|
||||
|
||||
'user.exists' => trans('admin/users/message.user_not_found'),
|
||||
|
||||
// Cannot delete yourself
|
||||
'user.not_in' => trans('admin/users/message.error.cannot_delete_yourself'),
|
||||
|
||||
@@ -84,6 +89,8 @@ class DeleteUserRequest extends FormRequest
|
||||
// assigned accessories is not 0
|
||||
'assigned_accessories.in' => trans_choice('admin/users/message.error.delete_has_accessories_var', $user_to_delete->accessories()->count(), ['count' => $user_to_delete->accessories()->count()]),
|
||||
|
||||
'deleted_at.in' => trans('admin/users/message.user_deleted_warning'),
|
||||
|
||||
], $messages);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,9 @@ class AssetImporter extends ItemImporter
|
||||
{
|
||||
parent::__construct($filename);
|
||||
|
||||
if (!is_null(Statuslabel::first())) {
|
||||
$this->defaultStatusLabelId = Statuslabel::first()->id;
|
||||
|
||||
if (!is_null(Statuslabel::deployable()->first())) {
|
||||
$this->defaultStatusLabelId = Statuslabel::deployable()->first()->id;
|
||||
}
|
||||
}
|
||||
@@ -102,7 +104,7 @@ class AssetImporter extends ItemImporter
|
||||
$this->item['expected_checkin'] = trim($this->findCsvMatch($row, 'expected_checkin'));
|
||||
$this->item['last_audit_date'] = trim($this->findCsvMatch($row, 'last_audit_date'));
|
||||
$this->item['next_audit_date'] = trim($this->findCsvMatch($row, 'next_audit_date'));
|
||||
$this->item['asset_eol_date'] = trim($this->findCsvMatch($row, 'next_audit_date'));
|
||||
$this->item['asset_eol_date'] = trim($this->findCsvMatch($row, 'asset_eol_date'));
|
||||
$this->item['asset_tag'] = $asset_tag;
|
||||
|
||||
// We need to save the user if it exists so that we can checkout to user later.
|
||||
|
||||
+25
-17
@@ -153,7 +153,7 @@ class Asset extends Depreciable
|
||||
'expected_checkin',
|
||||
'byod',
|
||||
'asset_eol_date',
|
||||
'eol_explicit',
|
||||
'eol_explicit',
|
||||
'last_audit_date',
|
||||
'next_audit_date',
|
||||
'asset_eol_date',
|
||||
@@ -165,21 +165,21 @@ class Asset extends Depreciable
|
||||
|
||||
/**
|
||||
* The attributes that should be included when searching the model.
|
||||
*
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $searchableAttributes = [
|
||||
'name',
|
||||
'asset_tag',
|
||||
'serial',
|
||||
'order_number',
|
||||
'purchase_cost',
|
||||
'notes',
|
||||
'name',
|
||||
'asset_tag',
|
||||
'serial',
|
||||
'order_number',
|
||||
'purchase_cost',
|
||||
'notes',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'purchase_date',
|
||||
'expected_checkin',
|
||||
'next_audit_date',
|
||||
'updated_at',
|
||||
'purchase_date',
|
||||
'expected_checkin',
|
||||
'next_audit_date',
|
||||
'last_audit_date',
|
||||
'last_checkin',
|
||||
'last_checkout',
|
||||
@@ -188,7 +188,7 @@ class Asset extends Depreciable
|
||||
|
||||
/**
|
||||
* The relations and their attributes that should be included when searching the model.
|
||||
*
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $searchableRelations = [
|
||||
@@ -301,7 +301,7 @@ class Asset extends Depreciable
|
||||
|
||||
// The asset status is not archived and is deployable
|
||||
if (($this->assetstatus) && ($this->assetstatus->archived == '0')
|
||||
&& ($this->assetstatus->deployable == '1'))
|
||||
&& ($this->assetstatus->deployable == '1'))
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -574,7 +574,7 @@ class Asset extends Depreciable
|
||||
*/
|
||||
public function assignedType()
|
||||
{
|
||||
return strtolower(class_basename($this->assigned_type));
|
||||
return $this->assigned_type ? strtolower(class_basename($this->assigned_type)) : null;
|
||||
}
|
||||
|
||||
|
||||
@@ -858,11 +858,11 @@ class Asset extends Depreciable
|
||||
foreach ($assets as $asset) {
|
||||
$results = preg_match("/\d+$/", $asset['asset_tag'], $matches);
|
||||
|
||||
if ($results)
|
||||
if ($results)
|
||||
{
|
||||
$number = $matches[0];
|
||||
|
||||
if ($number > $max)
|
||||
if ($number > $max)
|
||||
{
|
||||
$max = $number;
|
||||
}
|
||||
@@ -990,6 +990,14 @@ class Asset extends Depreciable
|
||||
);
|
||||
}
|
||||
|
||||
protected function lastAuditDate(): Attribute
|
||||
{
|
||||
return Attribute::make(
|
||||
get: fn ($value) => $value ? Carbon::parse($value)->format('Y-m-d H:i:s') : null,
|
||||
set: fn ($value) => $value ? Carbon::parse($value)->format('Y-m-d H:i:s') : null,
|
||||
);
|
||||
}
|
||||
|
||||
protected function lastCheckout(): Attribute
|
||||
{
|
||||
return Attribute::make(
|
||||
|
||||
@@ -173,10 +173,14 @@ class Depreciable extends SnipeModel
|
||||
|
||||
public function depreciated_date()
|
||||
{
|
||||
$date = date_create($this->purchase_date);
|
||||
date_add($date, date_interval_create_from_date_string($this->get_depreciation()->months.' months'));
|
||||
if (($this->purchase_date) && ($this->get_depreciation())) {
|
||||
$date = date_create($this->purchase_date);
|
||||
|
||||
return date_add($date, date_interval_create_from_date_string($this->get_depreciation()->months.' months'));//date_format($date, 'Y-m-d'); //don't bake-in format, for internationalization
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
return $date; //date_format($date, 'Y-m-d'); //don't bake-in format, for internationalization
|
||||
}
|
||||
|
||||
// it's necessary for unit tests
|
||||
|
||||
+30
-12
@@ -204,6 +204,23 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
||||
return $this->checkPermissionSection('superuser');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the can edit their own profile
|
||||
*
|
||||
* @author A. Gianotto <snipe@snipe.net>
|
||||
* @since [v6.3.4]
|
||||
* @return bool
|
||||
*/
|
||||
public function canEditProfile() : bool {
|
||||
|
||||
$setting = Setting::getSettings();
|
||||
if ($setting->profile_edit == 1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the user is deletable
|
||||
*
|
||||
@@ -572,7 +589,6 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
||||
|
||||
if ($format=='firstname.lastname') {
|
||||
$username = str_slug($first_name) . '.' . str_slug($last_name);
|
||||
|
||||
} elseif ($format == 'lastnamefirstinitial') {
|
||||
$username = str_slug($last_name.substr($first_name, 0, 1));
|
||||
} elseif ($format == 'firstintial.lastname') {
|
||||
@@ -589,7 +605,9 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
||||
$username = str_slug($first_name).str_slug($last_name);
|
||||
} elseif ($format == 'firstnamelastinitial') {
|
||||
$username = str_slug(($first_name.substr($last_name, 0, 1)));
|
||||
}
|
||||
} elseif ($format == 'lastname.firstname') {
|
||||
$username = str_slug($last_name).'.'.str_slug($first_name);
|
||||
}
|
||||
}
|
||||
|
||||
$user['first_name'] = $first_name;
|
||||
@@ -827,16 +845,16 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
|
||||
|
||||
|
||||
return $query->where('location_id','=', $location)
|
||||
->where('first_name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('email', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('last_name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('permissions', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('country', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('phone', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('jobtitle', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('employee_num', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('username', 'LIKE', '%' . $search . '%')
|
||||
->orwhereRaw('CONCAT(first_name," ",last_name) LIKE \''.$search.'%\'');
|
||||
->where('users.first_name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.email', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.last_name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.permissions', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.country', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.phone', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.jobtitle', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.employee_num', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('users.username', 'LIKE', '%' . $search . '%')
|
||||
->orwhereRaw('CONCAT(users.first_name," ",users.last_name) LIKE \''.$search.'%\'');
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ use Illuminate\Routing\UrlGenerator;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
/**
|
||||
* This service provider handles setting the observers on models
|
||||
@@ -31,7 +32,7 @@ use Illuminate\Support\Facades\Log;
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Custom email array validation
|
||||
* Bootstrap application services.
|
||||
*
|
||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||
* @since [v3.0]
|
||||
@@ -39,19 +40,24 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot(UrlGenerator $url)
|
||||
{
|
||||
if (env('APP_FORCE_TLS')) {
|
||||
if (strpos(env('APP_URL'), 'https') === 0) {
|
||||
$url->forceScheme('https');
|
||||
} else {
|
||||
Log::debug("'APP_FORCE_TLS' is set to true, but 'APP_URL' does not start with 'https://'. Will not force TLS on connections.");
|
||||
}
|
||||
/**
|
||||
* This is a workaround for proxies/reverse proxies that don't always pass the proper headers.
|
||||
*
|
||||
* Here, we check if the APP_URL starts with https://, which we should always honor,
|
||||
* regardless of how well the proxy or network is configured.
|
||||
*
|
||||
* We'll force the https scheme if the APP_URL starts with https://, or if APP_FORCE_TLS is set to true.
|
||||
*
|
||||
*/
|
||||
if ((strpos(env('APP_URL'), 'https://') === 0) || (env('APP_FORCE_TLS'))) {
|
||||
$url->forceScheme('https');
|
||||
}
|
||||
|
||||
// TODO - isn't it somehow 'gauche' to check the environment directly; shouldn't we be using config() somehow?
|
||||
if ( ! env('APP_ALLOW_INSECURE_HOSTS')) { // unless you set APP_ALLOW_INSECURE_HOSTS, you should PROHIBIT forging domain parts of URL via Host: headers
|
||||
$url_parts = parse_url(config('app.url'));
|
||||
if ($url_parts && array_key_exists('scheme', $url_parts) && array_key_exists('host', $url_parts)) { // check for the *required* parts of a bare-minimum URL
|
||||
\URL::forceRootUrl(config('app.url'));
|
||||
URL::forceRootUrl(config('app.url'));
|
||||
} else {
|
||||
Log::error("Your APP_URL in your .env is misconfigured - it is: ".config('app.url').". Many things will work strangely unless you fix it.");
|
||||
}
|
||||
|
||||
@@ -232,5 +232,12 @@ class AuthServiceProvider extends ServiceProvider
|
||||
|| $user->can('update', User::class)
|
||||
|| $user->can('create', User::class);
|
||||
});
|
||||
|
||||
|
||||
// This determines whether the user can edit their profile based on the setting in Admin > General
|
||||
Gate::define('self.profile', function ($user) {
|
||||
return $user->canEditProfile();
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,6 +163,7 @@ class Saml
|
||||
OneLogin_Saml2_Utils::setProxyVars(request()->isFromTrustedProxy());
|
||||
|
||||
data_set($settings, 'sp.entityId', config('app.url'));
|
||||
data_set($settings, 'baseurl', config('app.url') . '/saml');
|
||||
data_set($settings, 'sp.assertionConsumerService.url', route('saml.acs'));
|
||||
data_set($settings, 'sp.singleLogoutService.url', route('saml.sls'));
|
||||
data_set($settings, 'sp.x509cert', $setting->saml_sp_x509cert);
|
||||
|
||||
+7
-7
@@ -26,7 +26,7 @@
|
||||
"alek13/slack": "^2.0",
|
||||
"arietimmerman/laravel-scim-server": "dev-master",
|
||||
"bacon/bacon-qr-code": "^2.0",
|
||||
"barryvdh/laravel-debugbar": "^3.6",
|
||||
"barryvdh/laravel-debugbar": "^3.13",
|
||||
"barryvdh/laravel-dompdf": "^2.0",
|
||||
"doctrine/cache": "^1.10",
|
||||
"doctrine/dbal": "^3.1",
|
||||
@@ -61,7 +61,7 @@
|
||||
"phpspec/prophecy": "^1.10",
|
||||
"pragmarx/google2fa-laravel": "^1.3",
|
||||
"rollbar/rollbar-laravel": "^8.0",
|
||||
"spatie/laravel-backup": "^8.0",
|
||||
"spatie/laravel-backup": "^8.8",
|
||||
"spatie/laravel-ignition": "^2.0",
|
||||
"tecnickcom/tc-lib-barcode": "^1.15",
|
||||
"tecnickcom/tcpdf": "^6.5",
|
||||
@@ -70,17 +70,17 @@
|
||||
},
|
||||
"suggest": {
|
||||
"ext-ldap": "*",
|
||||
"ext-zip": "*"
|
||||
"ext-zip": "*",
|
||||
"ext-exif": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"brianium/paratest": "^v6.4.4",
|
||||
"fakerphp/faker": "^1.16",
|
||||
"larastan/larastan": "^2.9",
|
||||
"mockery/mockery": "^1.4",
|
||||
"nunomaduro/larastan": "^2.0",
|
||||
"nunomaduro/phpinsights": "^2.7",
|
||||
"php-mock/php-mock-phpunit": "^2.8",
|
||||
"phpunit/php-token-stream": "^3.1",
|
||||
"phpunit/phpunit": "^9.0",
|
||||
"php-mock/php-mock-phpunit": "^2.10",
|
||||
"phpunit/phpunit": "^9.6.19",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"symfony/css-selector": "^4.4",
|
||||
"symfony/dom-crawler": "^4.4",
|
||||
|
||||
Generated
+1461
-799
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -112,7 +112,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'fallback_locale' => 'en-US',
|
||||
'fallback_locale' => env('FALLBACK_APP_LOCALE', 'en'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -137,6 +137,11 @@ return [
|
||||
|
||||
'mail' => [
|
||||
'to' => env('MAIL_BACKUP_NOTIFICATION_ADDRESS', null),
|
||||
|
||||
'from' => [
|
||||
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
|
||||
'name' => env('MAIL_FROM_NAME', 'Example'),
|
||||
],
|
||||
],
|
||||
|
||||
'slack' => [
|
||||
@@ -152,6 +157,20 @@ return [
|
||||
'icon' => null,
|
||||
|
||||
],
|
||||
|
||||
'discord' => [
|
||||
'webhook_url' => '',
|
||||
|
||||
/*
|
||||
* If this is an empty string, the name field on the webhook will be used.
|
||||
*/
|
||||
'username' => '',
|
||||
|
||||
/*
|
||||
* If this is an empty string, the avatar on the webhook will be used.
|
||||
*/
|
||||
'avatar_url' => '',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v7.0.2',
|
||||
'full_app_version' => 'v7.0.2 - build 13978-g430808e18',
|
||||
'build_version' => '13978',
|
||||
'app_version' => 'v7.0.6',
|
||||
'full_app_version' => 'v7.0.6 - build 14112-ge1a6b441d',
|
||||
'build_version' => '14112',
|
||||
'prerelease_version' => '',
|
||||
'hash_version' => 'g430808e18',
|
||||
'full_hash' => 'v7.0.2-12-g430808e18',
|
||||
'hash_version' => 'ge1a6b441d',
|
||||
'full_hash' => 'v7.0.6-6-ge1a6b441d',
|
||||
'branch' => 'master',
|
||||
);
|
||||
@@ -38,6 +38,16 @@ class UserFactory extends Factory
|
||||
];
|
||||
}
|
||||
|
||||
public function deletedUser()
|
||||
{
|
||||
return $this->state(function () {
|
||||
return [
|
||||
'deleted_at' => $this->faker->dateTime(),
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public function firstAdmin()
|
||||
{
|
||||
return $this->state(function () {
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('settings', function (Blueprint $table) {
|
||||
$table->boolean('profile_edit')->nullable()->default(1);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('settings', function (Blueprint $table) {
|
||||
if (Schema::hasColumn('settings', 'profile_edit')) {
|
||||
$table->dropColumn('profile_edit');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Generated
+4
-4
@@ -31,7 +31,7 @@
|
||||
"less-loader": "^6.0",
|
||||
"list.js": "^1.5.0",
|
||||
"morris.js": "github:morrisjs/morris.js",
|
||||
"papaparse": "5.2.0",
|
||||
"papaparse": "5.4.1",
|
||||
"select2": "4.0.13",
|
||||
"sheetjs": "^2.0.0",
|
||||
"signature_pad": "^4.2.0",
|
||||
@@ -8347,9 +8347,9 @@
|
||||
"license": "(MIT AND Zlib)"
|
||||
},
|
||||
"node_modules/papaparse": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.2.0.tgz",
|
||||
"integrity": "sha512-ylq1wgUSnagU+MKQtNeVqrPhZuMYBvOSL00DHycFTCxownF95gpLAk1HiHdUW77N8yxRq1qHXLdlIPyBSG9NSA=="
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz",
|
||||
"integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw=="
|
||||
},
|
||||
"node_modules/param-case": {
|
||||
"version": "3.0.4",
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@
|
||||
"less-loader": "^6.0",
|
||||
"list.js": "^1.5.0",
|
||||
"morris.js": "github:morrisjs/morris.js",
|
||||
"papaparse": "5.2.0",
|
||||
"papaparse": "5.4.1",
|
||||
"select2": "4.0.13",
|
||||
"sheetjs": "^2.0.0",
|
||||
"signature_pad": "^4.2.0",
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
@@ -1,3 +0,0 @@
|
||||
GIF89a
|
||||
<?php echo "Hello, the date is: " . date('c');
|
||||
|
||||
|
Before Width: | Height: | Size: 55 B |
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+17
-17
@@ -6,19 +6,19 @@
|
||||
"/css/build/app.css": "/css/build/app.css?id=d6fd5ea2989e7ab278745d995c167ae7",
|
||||
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=a67bd93bed52e6a29967fe472de66d6c",
|
||||
"/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=268041e902b019730c23ee3875838005",
|
||||
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=03075904b967308132b810bc0205ab1c",
|
||||
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=47ab28abd019c2b1f9aae60a3d44824a",
|
||||
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=af8c7daf7e9a2c784eafb76f65c418f7",
|
||||
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=8a12dfa3bef796fc17178890e0aff8d6",
|
||||
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=34023bf46b7c2486b7468de9b750dbff",
|
||||
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=dd5eb6c76770bacaa2e960849d275516",
|
||||
"/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=fc7adb943668ac69fe4b646625a7571f",
|
||||
"/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=7fb8cf2421ad272b41393fdf5844559f",
|
||||
"/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=b391d15ee01e2aaffe90554eae9fde0b",
|
||||
"/css/dist/skins/skin-purple.css": "/css/dist/skins/skin-purple.css?id=cf6c8c340420724b02d6e787ef9bded5",
|
||||
"/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=122d3df19d2c0552d7ef388e69f7d71f",
|
||||
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=5414c37b1403f41e051ad7b3aac112b4",
|
||||
"/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=eb99dbccf43841b18be1b3ffc69d9497",
|
||||
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=5f3abb12a286d6cb8aa523322d7f053b",
|
||||
"/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=1f33ca3d860461c1127ec465ab3ebb6b",
|
||||
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=bd61fefb56b30ed6d8c946f02bc956fb",
|
||||
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=198553147983f411db55d774009bf481",
|
||||
"/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=b48f4d8af0e1ca5621c161e93951109f",
|
||||
"/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=f0fbbb0ac729ea092578fb05ca615460",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=a9f493a1d66b45420401f3ae8ee4aab1",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=e121e2c7ce8e6e6e135a5609e241fe39",
|
||||
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
|
||||
"/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7",
|
||||
"/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0141634c24336be626e05c8b77d1fa27",
|
||||
@@ -29,24 +29,24 @@
|
||||
"/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=96d16b1bdb177fd796c810b9e706c780",
|
||||
"/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=8994b282f9f3b7a00380bb1e2731a4bf",
|
||||
"/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=111e341dba724e1df946e8d1f406a7bd",
|
||||
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=5f79123a6750afd34dbf565faec3dda3",
|
||||
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=56d8ef58cbae76d63d504ff8d69cf382",
|
||||
"/js/build/vendor.js": "/js/build/vendor.js?id=179bfe20e8767f7df32658c6b5a10ca3",
|
||||
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=e5918703a22f8992c4c98f1dbbecb8f7",
|
||||
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=1635e7bbab779359c9b97121a8203521",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=99df559d106d7c1da6beff663646d76f",
|
||||
"/js/dist/all-defer.js": "/js/dist/all-defer.js?id=75d841799f917cbcacf6b87698379726",
|
||||
"/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=b48f4d8af0e1ca5621c161e93951109f",
|
||||
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=bd61fefb56b30ed6d8c946f02bc956fb",
|
||||
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=198553147983f411db55d774009bf481",
|
||||
"/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=1f33ca3d860461c1127ec465ab3ebb6b",
|
||||
"/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=5414c37b1403f41e051ad7b3aac112b4",
|
||||
"/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=5f3abb12a286d6cb8aa523322d7f053b",
|
||||
"/css/dist/skins/skin-blue.min.css": "/css/dist/skins/skin-blue.min.css?id=392cc93cfc0be0349bab9697669dd091",
|
||||
"/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=47ab28abd019c2b1f9aae60a3d44824a",
|
||||
"/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=34023bf46b7c2486b7468de9b750dbff",
|
||||
"/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=fc7adb943668ac69fe4b646625a7571f",
|
||||
"/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=af8c7daf7e9a2c784eafb76f65c418f7",
|
||||
"/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=dd5eb6c76770bacaa2e960849d275516",
|
||||
"/css/dist/skins/skin-red.min.css": "/css/dist/skins/skin-red.min.css?id=b9a74ec0cd68f83e7480d5ae39919beb",
|
||||
"/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=122d3df19d2c0552d7ef388e69f7d71f",
|
||||
"/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=eb99dbccf43841b18be1b3ffc69d9497",
|
||||
"/css/dist/skins/skin-purple.min.css": "/css/dist/skins/skin-purple.min.css?id=cf6c8c340420724b02d6e787ef9bded5",
|
||||
"/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=7fb8cf2421ad272b41393fdf5844559f",
|
||||
"/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=b391d15ee01e2aaffe90554eae9fde0b",
|
||||
"/css/dist/skins/skin-orange.min.css": "/css/dist/skins/skin-orange.min.css?id=268041e902b019730c23ee3875838005",
|
||||
"/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=03075904b967308132b810bc0205ab1c",
|
||||
"/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=8a12dfa3bef796fc17178890e0aff8d6",
|
||||
"/css/dist/skins/skin-contrast.min.css": "/css/dist/skins/skin-contrast.min.css?id=f0fbbb0ac729ea092578fb05ca615460"
|
||||
}
|
||||
|
||||
@@ -457,4 +457,7 @@ div.container.row-new-striped{
|
||||
}
|
||||
.table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th {
|
||||
background-color: var(--back-sub);
|
||||
}
|
||||
.table > tbody > tr.warning > td{
|
||||
background-color:var(--back-sub);
|
||||
}
|
||||
@@ -443,4 +443,7 @@ a {
|
||||
|
||||
.search-highlight, .search-highlight:hover {
|
||||
background-color: #e9d15b;
|
||||
}
|
||||
.table > tbody > tr.warning > td{
|
||||
background-color:var(--back-sub);
|
||||
}
|
||||
@@ -431,4 +431,7 @@ a {
|
||||
|
||||
.search-highlight, .search-highlight:hover {
|
||||
background-color: #e9d15b;
|
||||
}
|
||||
.table > tbody > tr.warning > td{
|
||||
background-color:var(--back-sub);
|
||||
}
|
||||
@@ -426,4 +426,7 @@ input[type=text], input[type=search] {
|
||||
}
|
||||
.search-highlight, .search-highlight:hover {
|
||||
background-color: #e9d15b;
|
||||
}
|
||||
.table > tbody > tr.warning > td{
|
||||
background-color:var(--back-sub);
|
||||
}
|
||||
@@ -438,4 +438,7 @@ a {
|
||||
|
||||
.search-highlight, .search-highlight:hover {
|
||||
background-color: #e9d15b;
|
||||
}
|
||||
.table > tbody > tr.warning > td{
|
||||
background-color:var(--back-sub);
|
||||
}
|
||||
@@ -450,4 +450,7 @@ a {
|
||||
|
||||
.search-highlight, .search-highlight:hover {
|
||||
background-color: #e9d15b;
|
||||
}
|
||||
.table > tbody > tr.warning > td{
|
||||
background-color:var(--back-sub);
|
||||
}
|
||||
@@ -418,4 +418,7 @@ tr th div.th-inner {
|
||||
|
||||
.search-highlight, .search-highlight:hover {
|
||||
background-color: #e9d15b;
|
||||
}
|
||||
.table > tbody > tr.warning > td{
|
||||
background-color:var(--back-sub);
|
||||
}
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => 'crwdns6798:0crwdne6798:0',
|
||||
'api_key_warning' => 'crwdns6800:0crwdne6800:0',
|
||||
'api_key_warning' => 'crwdns12268:0crwdne12268:0',
|
||||
'api_base_url' => 'crwdns6802:0crwdne6802:0',
|
||||
'api_base_url_endpoint' => 'crwdns6804:0crwdne6804:0',
|
||||
'api_token_expiration_time' => 'crwdns6806:0crwdne6806:0',
|
||||
'api_reference' => 'crwdns6808:0crwdne6808:0',
|
||||
'api_reference' => 'crwdns12270:0crwdne12270:0',
|
||||
'profile_updated' => 'crwdns12202:0crwdne12202:0',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'crwdns650:0crwdne650:0',
|
||||
'assoc_users' => 'crwdns651:0crwdne651:0',
|
||||
'assoc_users' => 'crwdns12272:0crwdne12272:0',
|
||||
'assoc_assets' => 'crwdns1404:0crwdne1404:0',
|
||||
'assoc_child_loc' => 'crwdns1405:0crwdne1405:0',
|
||||
'assigned_assets' => 'crwdns11179:0crwdne11179:0',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'crwdns1678:0crwdne1678:0',
|
||||
'username_format_help' => 'crwdns5918:0crwdne5918:0',
|
||||
'oauth_title' => 'crwdns6403:0crwdne6403:0',
|
||||
'oauth_clients' => 'crwdns12246:0crwdne12246:0',
|
||||
'oauth' => 'crwdns6405:0crwdne6405:0',
|
||||
'oauth_help' => 'crwdns6407:0crwdne6407:0',
|
||||
'oauth_no_clients' => 'crwdns12248:0crwdne12248:0',
|
||||
'oauth_secret' => 'crwdns12250:0crwdne12250:0',
|
||||
'oauth_authorized_apps' => 'crwdns12252:0crwdne12252:0',
|
||||
'oauth_redirect_url' => 'crwdns12254:0crwdne12254:0',
|
||||
'oauth_name_help' => 'crwdns12256:0crwdne12256:0',
|
||||
'oauth_scopes' => 'crwdns12258:0crwdne12258:0',
|
||||
'oauth_callback_url' => 'crwdns12260:0crwdne12260:0',
|
||||
'create_client' => 'crwdns12262:0crwdne12262:0',
|
||||
'no_scopes' => 'crwdns12264:0crwdne12264:0',
|
||||
'asset_tag_title' => 'crwdns6409:0crwdne6409:0',
|
||||
'barcode_title' => 'crwdns6411:0crwdne6411:0',
|
||||
'barcodes' => 'crwdns6413:0crwdne6413:0',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'crwdns6459:0crwdne6459:0',
|
||||
'labels_title' => 'crwdns6461:0crwdne6461:0',
|
||||
'labels_help' => 'crwdns6463:0crwdne6463:0',
|
||||
'purge' => 'crwdns6465:0crwdne6465:0',
|
||||
'purge_keywords' => 'crwdns6467:0crwdne6467:0',
|
||||
'purge_help' => 'crwdns6469:0crwdne6469:0',
|
||||
'ldap_extension_warning' => 'crwdns6471:0crwdne6471:0',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'crwdns11827:0crwdne11827:0',
|
||||
'bs_table_storage' => 'crwdns11829:0crwdne11829:0',
|
||||
'timezone' => 'crwdns11831:0crwdne11831:0',
|
||||
'profile_edit' => 'crwdns12280:0crwdne12280:0',
|
||||
'profile_edit_help' => 'crwdns12282:0crwdne12282:0',
|
||||
|
||||
];
|
||||
|
||||
@@ -14,6 +14,5 @@ return [
|
||||
'username_help_bottom' => 'crwdns6046:0crwdne6046:0',
|
||||
'google_login' => 'crwdns12026:0crwdne12026:0',
|
||||
'google_login_failed' => 'crwdns11603:0crwdne11603:0',
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ return array(
|
||||
'success' => 'crwdns5930:0crwdne5930:0',
|
||||
'code_required' => 'crwdns5932:0crwdne5932:0',
|
||||
'invalid_code' => 'crwdns5934:0crwdne5934:0',
|
||||
'enter_two_factor_code' => 'crwdns12274:0crwdne12274:0',
|
||||
'please_enroll' => 'crwdns12276:0crwdne12276:0',
|
||||
),
|
||||
|
||||
'signin' => array(
|
||||
|
||||
@@ -134,6 +134,7 @@ return [
|
||||
'lastname_firstinitial' => 'crwdns5952:0crwdne5952:0',
|
||||
'firstinitial.lastname' => 'crwdns5954:0crwdne5954:0',
|
||||
'firstnamelastinitial' => 'crwdns5956:0crwdne5956:0',
|
||||
'lastnamefirstname' => 'crwdns12266:0crwdne12266:0',
|
||||
'first_name' => 'crwdns1053:0crwdne1053:0',
|
||||
'first_name_format' => 'crwdns1647:0crwdne1647:0',
|
||||
'files' => 'crwdns1996:0crwdne1996:0',
|
||||
@@ -157,7 +158,7 @@ return [
|
||||
'image_upload' => 'crwdns1058:0crwdne1058:0',
|
||||
'filetypes_accepted_help' => 'crwdns6129:0crwdne6129:0',
|
||||
'filetypes_size_help' => 'crwdns6131:0crwdne6131:0',
|
||||
'image_filetypes_help' => 'crwdns6038:0crwdne6038:0',
|
||||
'image_filetypes_help' => 'crwdns12284:0crwdne12284:0',
|
||||
'unaccepted_image_type' => 'crwdns11365:0crwdne11365:0',
|
||||
'import' => 'crwdns1411:0crwdne1411:0',
|
||||
'import_this_file' => 'crwdns11922:0crwdne11922:0',
|
||||
@@ -239,6 +240,7 @@ return [
|
||||
'restored' => 'crwdns1979:0crwdne1979:0',
|
||||
'restore' => 'crwdns6075:0crwdne6075:0',
|
||||
'requestable_models' => 'crwdns6147:0crwdne6147:0',
|
||||
'requestable_items' => 'crwdns12278:0crwdne12278:0',
|
||||
'requested' => 'crwdns1408:0crwdne1408:0',
|
||||
'requested_date' => 'crwdns6149:0crwdne6149:0',
|
||||
'requested_assets' => 'crwdns6151:0crwdne6151:0',
|
||||
@@ -525,6 +527,7 @@ return [
|
||||
'permission_denied_superuser_demo' => 'crwdns12158:0crwdne12158:0',
|
||||
'pwd_reset_not_sent' => 'crwdns12160:0crwdne12160:0',
|
||||
'error_sending_email' => 'crwdns12162:0crwdne12162:0',
|
||||
'sad_panda' => 'crwdns12286:0crwdne12286:0',
|
||||
'bulk' => [
|
||||
'delete' =>
|
||||
[
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => '私有API 金鑰',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they
|
||||
will not be visible to you again.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'api_base_url' => 'Your API base url is located at:',
|
||||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'API tokens are set to expire in:',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to
|
||||
find specific API endpoints and additional API documentation.',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Ligging bestaan nie.',
|
||||
'assoc_users' => 'Hierdie ligging is tans gekoppel aan ten minste een gebruiker en kan nie uitgevee word nie. Dateer asseblief u gebruikers op om nie meer hierdie ligging te verwys nie en probeer weer.',
|
||||
'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
|
||||
'assoc_assets' => 'Hierdie ligging is tans geassosieer met ten minste een bate en kan nie uitgevee word nie. Dateer asseblief jou bates op om nie meer hierdie ligging te verwys nie en probeer weer.',
|
||||
'assoc_child_loc' => 'Hierdie ligging is tans die ouer van ten minste een kind se plek en kan nie uitgevee word nie. Werk asseblief jou liggings by om nie meer hierdie ligging te verwys nie en probeer weer.',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'Lengte van bate-etikette, insluitend zerofill',
|
||||
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
|
||||
'oauth_title' => 'OAuth API Settings',
|
||||
'oauth_clients' => 'OAuth Clients',
|
||||
'oauth' => 'OAuth',
|
||||
'oauth_help' => 'Oauth Endpoint Settings',
|
||||
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
|
||||
'oauth_secret' => 'Secret',
|
||||
'oauth_authorized_apps' => 'Authorized Applications',
|
||||
'oauth_redirect_url' => 'Redirect URL',
|
||||
'oauth_name_help' => ' Something your users will recognize and trust.',
|
||||
'oauth_scopes' => 'Scopes',
|
||||
'oauth_callback_url' => 'Your application authorization callback URL.',
|
||||
'create_client' => 'Create Client',
|
||||
'no_scopes' => 'No scopes',
|
||||
'asset_tag_title' => 'Update Asset Tag Settings',
|
||||
'barcode_title' => 'Update Barcode Settings',
|
||||
'barcodes' => 'Barcodes',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'Labels',
|
||||
'labels_title' => 'Update Label Settings',
|
||||
'labels_help' => 'Label sizes & settings',
|
||||
'purge' => 'Purge',
|
||||
'purge_keywords' => 'permanently delete',
|
||||
'purge_help' => 'Verwyder verwyderde rekords',
|
||||
'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'Database Driver',
|
||||
'bs_table_storage' => 'Table Storage',
|
||||
'timezone' => 'Timezone',
|
||||
'profile_edit' => 'Edit Profile',
|
||||
'profile_edit_help' => 'Allow users to edit their own profiles.',
|
||||
|
||||
];
|
||||
|
||||
@@ -14,6 +14,5 @@ return [
|
||||
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
|
||||
'google_login' => 'Login with Google Workspace',
|
||||
'google_login_failed' => 'Google Login failed, please try again.',
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ return array(
|
||||
'success' => 'Jy is suksesvol aangemeld.',
|
||||
'code_required' => 'Two-factor code is required.',
|
||||
'invalid_code' => 'Two-factor code is invalid.',
|
||||
'enter_two_factor_code' => 'Please enter your two-factor authentication code.',
|
||||
'please_enroll' => 'Please enroll a device in two-factor authentication.',
|
||||
),
|
||||
|
||||
'signin' => array(
|
||||
|
||||
@@ -134,6 +134,7 @@ return [
|
||||
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
|
||||
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
|
||||
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
|
||||
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
|
||||
'first_name' => 'Eerste naam',
|
||||
'first_name_format' => 'Voornaam (jane@example.com)',
|
||||
'files' => 'Files',
|
||||
@@ -157,7 +158,7 @@ return [
|
||||
'image_upload' => 'Laai prent op',
|
||||
'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.',
|
||||
'filetypes_size_help' => 'Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, and svg. Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.',
|
||||
'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.',
|
||||
'import' => 'invoer',
|
||||
'import_this_file' => 'Map fields and process this file',
|
||||
@@ -239,6 +240,7 @@ return [
|
||||
'restored' => 'restored',
|
||||
'restore' => 'herstel',
|
||||
'requestable_models' => 'Requestable Models',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requested' => 'versoek',
|
||||
'requested_date' => 'Requested Date',
|
||||
'requested_assets' => 'Requested Assets',
|
||||
@@ -526,6 +528,7 @@ return [
|
||||
'permission_denied_superuser_demo' => 'Permission denied. You cannot update user information for superadmins on the demo.',
|
||||
'pwd_reset_not_sent' => 'User is not activated, is LDAP synced, or does not have an email address',
|
||||
'error_sending_email' => 'Error sending email',
|
||||
'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe <a href=":link">return to the dashboard</a>, or contact your administrator.',
|
||||
'bulk' => [
|
||||
'delete' =>
|
||||
[
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => 'Personal API Keys',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they
|
||||
will not be visible to you again.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'api_base_url' => 'Your API base url is located at:',
|
||||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'API tokens are set to expire in:',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to
|
||||
find specific API endpoints and additional API documentation.',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Location does not exist.',
|
||||
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ',
|
||||
'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
|
||||
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
|
||||
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'Length of asset tags, including zerofill',
|
||||
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
|
||||
'oauth_title' => 'OAuth API Settings',
|
||||
'oauth_clients' => 'OAuth Clients',
|
||||
'oauth' => 'OAuth',
|
||||
'oauth_help' => 'Oauth Endpoint Settings',
|
||||
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
|
||||
'oauth_secret' => 'Secret',
|
||||
'oauth_authorized_apps' => 'Authorized Applications',
|
||||
'oauth_redirect_url' => 'Redirect URL',
|
||||
'oauth_name_help' => ' Something your users will recognize and trust.',
|
||||
'oauth_scopes' => 'Scopes',
|
||||
'oauth_callback_url' => 'Your application authorization callback URL.',
|
||||
'create_client' => 'Create Client',
|
||||
'no_scopes' => 'No scopes',
|
||||
'asset_tag_title' => 'Update Asset Tag Settings',
|
||||
'barcode_title' => 'Update Barcode Settings',
|
||||
'barcodes' => 'Barcodes',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'Labels',
|
||||
'labels_title' => 'Update Label Settings',
|
||||
'labels_help' => 'Label sizes & settings',
|
||||
'purge' => 'Purge',
|
||||
'purge_keywords' => 'permanently delete',
|
||||
'purge_help' => 'Purge Deleted Records',
|
||||
'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'Database Driver',
|
||||
'bs_table_storage' => 'Table Storage',
|
||||
'timezone' => 'Timezone',
|
||||
'profile_edit' => 'Edit Profile',
|
||||
'profile_edit_help' => 'Allow users to edit their own profiles.',
|
||||
|
||||
];
|
||||
|
||||
@@ -14,6 +14,5 @@ return [
|
||||
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
|
||||
'google_login' => 'Login with Google Workspace',
|
||||
'google_login_failed' => 'Google Login failed, please try again.',
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ return array(
|
||||
'success' => 'You have successfully logged in.',
|
||||
'code_required' => 'Two-factor code is required.',
|
||||
'invalid_code' => 'Two-factor code is invalid.',
|
||||
'enter_two_factor_code' => 'Please enter your two-factor authentication code.',
|
||||
'please_enroll' => 'Please enroll a device in two-factor authentication.',
|
||||
),
|
||||
|
||||
'signin' => array(
|
||||
|
||||
@@ -134,6 +134,7 @@ return [
|
||||
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
|
||||
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
|
||||
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
|
||||
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
|
||||
'first_name' => 'First Name',
|
||||
'first_name_format' => 'First Name (jane@example.com)',
|
||||
'files' => 'Files',
|
||||
@@ -157,7 +158,7 @@ return [
|
||||
'image_upload' => 'Upload Image',
|
||||
'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.',
|
||||
'filetypes_size_help' => 'Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, and svg. Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.',
|
||||
'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.',
|
||||
'import' => 'Import',
|
||||
'import_this_file' => 'Map fields and process this file',
|
||||
@@ -239,6 +240,7 @@ return [
|
||||
'restored' => 'restored',
|
||||
'restore' => 'Restore',
|
||||
'requestable_models' => 'Requestable Models',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requested' => 'Requested',
|
||||
'requested_date' => 'Requested Date',
|
||||
'requested_assets' => 'Requested Assets',
|
||||
@@ -526,6 +528,7 @@ return [
|
||||
'permission_denied_superuser_demo' => 'Permission denied. You cannot update user information for superadmins on the demo.',
|
||||
'pwd_reset_not_sent' => 'User is not activated, is LDAP synced, or does not have an email address',
|
||||
'error_sending_email' => 'Error sending email',
|
||||
'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe <a href=":link">return to the dashboard</a>, or contact your administrator.',
|
||||
'bulk' => [
|
||||
'delete' =>
|
||||
[
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => 'مفاتيح API الشخصية',
|
||||
'api_key_warning' => 'عند إنشاء رمز API، تأكد من نسخه على الفور لأنه
|
||||
لن يكون مرئيا لك مرة أخرى.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'api_base_url' => 'عنوان URL الأساسي API الخاص بك موجود في:',
|
||||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'تم تعيين رموز API لانتهاء صلاحيتها في:',
|
||||
'api_reference' => 'الرجاء التحقق من مرجع API <a href="https://snipe-it.readme.io/reference" target="_blank"></a> إلى
|
||||
العثور على نقاط نهاية API المحددة ووثائق API الإضافية.',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'الموقع غير موجود.',
|
||||
'assoc_users' => 'هذا الموقع مرتبط حاليا بمستخدم واحد على الأقل ولا يمكن حذفه. يرجى تحديث المستخدمين لم يعد يشيروا إلى هذا الموقع ثم أعد المحاولة. ',
|
||||
'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
|
||||
'assoc_assets' => 'هذا الموقع مرتبط حاليا بمادة عرض واحدة على الأقل ولا يمكن حذفها. يرجى تحديث مواد العرض لم تعد تشير إلى هذا الموقع ثم أعد المحاولة. ',
|
||||
'assoc_child_loc' => 'هذا الموقع هو حاليا أحد الوالدين لموقع طفل واحد على الأقل ولا يمكن حذفه. يرجى تحديث مواقعك لم تعد تشير إلى هذا الموقع ثم أعد المحاولة.',
|
||||
'assigned_assets' => 'الأصول المعينة',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'طول ترميز الأصل، بما في ذلك تعبئة الاصفار',
|
||||
'username_format_help' => 'سيتم استخدام هذا الإعداد فقط من قبل عملية الاستيراد إذا لم يتم توفير اسم المستخدم ويتعين علينا إنشاء اسم مستخدم لك.',
|
||||
'oauth_title' => 'إعدادات API OAuth',
|
||||
'oauth_clients' => 'OAuth Clients',
|
||||
'oauth' => 'OAuth',
|
||||
'oauth_help' => 'إعدادات نقطة النهاية Oauth',
|
||||
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
|
||||
'oauth_secret' => 'Secret',
|
||||
'oauth_authorized_apps' => 'Authorized Applications',
|
||||
'oauth_redirect_url' => 'Redirect URL',
|
||||
'oauth_name_help' => ' Something your users will recognize and trust.',
|
||||
'oauth_scopes' => 'Scopes',
|
||||
'oauth_callback_url' => 'Your application authorization callback URL.',
|
||||
'create_client' => 'Create Client',
|
||||
'no_scopes' => 'No scopes',
|
||||
'asset_tag_title' => 'تحديث إعدادات علامة الأصل',
|
||||
'barcode_title' => 'تحديث إعدادات الباركود',
|
||||
'barcodes' => 'Barcodes',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'التسميات',
|
||||
'labels_title' => 'تحديث إعدادات التسمية',
|
||||
'labels_help' => 'أحجام التسمية & الإعدادات',
|
||||
'purge' => 'Purge',
|
||||
'purge_keywords' => 'حذف نهائيًا',
|
||||
'purge_help' => 'تطهير السجلات المحذوفة',
|
||||
'ldap_extension_warning' => 'لا يبدو أن ملحق LDAP مثبت أو مفعّل على هذا الخادم. لا يزال بإمكانك حفظ الإعدادات الخاصة بك، ولكن ستحتاج إلى تمكين ملحق LDAP لـ PHP قبل أن تعمل مزامنة LDAP أو تسجيل الدخول.',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'سائق قاعدة البيانات',
|
||||
'bs_table_storage' => 'تخزين الجدول',
|
||||
'timezone' => 'Timezone',
|
||||
'profile_edit' => 'Edit Profile',
|
||||
'profile_edit_help' => 'Allow users to edit their own profiles.',
|
||||
|
||||
];
|
||||
|
||||
@@ -14,6 +14,5 @@ return [
|
||||
'username_help_bottom' => 'قد يكون اسم المستخدم وعنوان البريد الإلكتروني الخاصين بك متماثلين، ولكن قد لا يكونا كذلك، بناءً على الإعدادات الخاصة بك. إذا كنت لا تستطيع تذكر اسم المستخدم الخاص بك، اتصل بالمسؤول. لن يتم إرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني إلى أسماء المستخدمين التي لا تحتوي على عنوان بريد إلكتروني مرتبط بها ',
|
||||
'google_login' => 'تسجيل الدخول باستخدام مساحة عمل جوجل',
|
||||
'google_login_failed' => 'فشل تسجيل دخول جوجل، الرجاء المحاولة مرة أخرى.',
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ return array(
|
||||
'success' => 'قمت بتسجيل الدخول بنجاح.',
|
||||
'code_required' => 'رمز Two-factor مطلوب.',
|
||||
'invalid_code' => 'رمز Two-factor غير صالح.',
|
||||
'enter_two_factor_code' => 'Please enter your two-factor authentication code.',
|
||||
'please_enroll' => 'Please enroll a device in two-factor authentication.',
|
||||
),
|
||||
|
||||
'signin' => array(
|
||||
|
||||
@@ -134,6 +134,7 @@ return [
|
||||
'lastname_firstinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
|
||||
'firstinitial.lastname' => 'الاسم الأخير الأول (jsmith@example.com)',
|
||||
'firstnamelastinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
|
||||
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
|
||||
'first_name' => 'الإسم الأول',
|
||||
'first_name_format' => 'الاسم الأول (jane@example.com)',
|
||||
'files' => 'الملفات',
|
||||
@@ -157,7 +158,7 @@ return [
|
||||
'image_upload' => 'رفع صورة',
|
||||
'filetypes_accepted_help' => 'نوع الملف المقبول هو :types. الحد الأقصى لحجم التحميل المسموح به هو :size.|أنواع الملف المقبول هي :types. الحد الأقصى لحجم التحميل المسموح به هو :size.',
|
||||
'filetypes_size_help' => 'الحد الأقصى لحجم الرفع المسموح به هو :size.',
|
||||
'image_filetypes_help' => 'أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. الحد الأقصى المسموح به للتحميل هو :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.',
|
||||
'unaccepted_image_type' => 'ملف الصورة هذا غير قابل للقراءة. أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. نوع هذا الملف هو: :mimetype.',
|
||||
'import' => 'استيراد',
|
||||
'import_this_file' => 'حقول الخريطة ومعالجة هذا الملف',
|
||||
@@ -239,13 +240,14 @@ return [
|
||||
'restored' => 'المعاد',
|
||||
'restore' => 'إستعادة',
|
||||
'requestable_models' => 'النماذج المطلوبة',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requested' => 'طلب',
|
||||
'requested_date' => 'تاريخ الطلب',
|
||||
'requested_assets' => 'الأصول المطلوبة',
|
||||
'requested_assets_menu' => 'الأصول المطلوبة',
|
||||
'request_canceled' => 'تم إلغاء الطلب',
|
||||
'request_item' => 'Request this item',
|
||||
'external_link_tooltip' => 'External link to',
|
||||
'external_link_tooltip' => 'رابط خارجي إلى',
|
||||
'save' => 'حفظ',
|
||||
'select_var' => 'اختر :thing... ', // this will eventually replace all of our other selects
|
||||
'select' => 'تحديد',
|
||||
@@ -526,6 +528,7 @@ return [
|
||||
'permission_denied_superuser_demo' => 'تم رفض الإذن. لا يمكنك تحديث معلومات المستخدم للمديرين الخارقين في العرض التجريبي.',
|
||||
'pwd_reset_not_sent' => 'المستخدم غير مفعل، أو مزامنة LDAP أو ليس لديه عنوان بريد إلكتروني',
|
||||
'error_sending_email' => 'خطأ في إرسال البريد الإلكتروني',
|
||||
'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe <a href=":link">return to the dashboard</a>, or contact your administrator.',
|
||||
'bulk' => [
|
||||
'delete' =>
|
||||
[
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => 'Частни API ключове',
|
||||
'api_key_warning' => 'Когато се генерират API token, копирайте ги веднага защото
|
||||
няма да бъдат видими в последствие.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'api_base_url' => 'Вашият API основен URL се намира на:',
|
||||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'API ключа ще изтиче на:',
|
||||
'api_reference' => 'Прочетете <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> за да
|
||||
намерите специфични API endpoints и допълнителна API документация.',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Местоположението не съществува.',
|
||||
'assoc_users' => 'Местоположението е свързано с поне един потребител и не може да бъде изтрито. Моля, актуализирайте потребителите, така че да не са свързани с това местоположение и опитайте отново. ',
|
||||
'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
|
||||
'assoc_assets' => 'Местоположението е свързано с поне един актив и не може да бъде изтрито. Моля, актуализирайте активите, така че да не са свързани с това местоположение и опитайте отново. ',
|
||||
'assoc_child_loc' => 'В избраното местоположение е присъединено едно или повече местоположения. Моля преместете ги в друго и опитайте отново.',
|
||||
'assigned_assets' => 'Изписани Активи',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'Дължина на етикети на актив, включително zerofill',
|
||||
'username_format_help' => 'Тази настройка се изпозлва само при импортиране, ако потребителя не е въведен и ние трябва да му генерираме потребителско име.',
|
||||
'oauth_title' => 'OAuth API Настройки',
|
||||
'oauth_clients' => 'OAuth Clients',
|
||||
'oauth' => 'OAuth',
|
||||
'oauth_help' => 'Oauth Endpoint настройки',
|
||||
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
|
||||
'oauth_secret' => 'Secret',
|
||||
'oauth_authorized_apps' => 'Authorized Applications',
|
||||
'oauth_redirect_url' => 'Redirect URL',
|
||||
'oauth_name_help' => ' Something your users will recognize and trust.',
|
||||
'oauth_scopes' => 'Scopes',
|
||||
'oauth_callback_url' => 'Your application authorization callback URL.',
|
||||
'create_client' => 'Create Client',
|
||||
'no_scopes' => 'No scopes',
|
||||
'asset_tag_title' => 'Обнови настроките на етикета на актива',
|
||||
'barcode_title' => 'Обнови настройките на баркод',
|
||||
'barcodes' => 'Баркоди',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'Етикети',
|
||||
'labels_title' => 'Обнови настройките на етикета',
|
||||
'labels_help' => 'Размер на етикета & настройки',
|
||||
'purge' => 'Изчисти',
|
||||
'purge_keywords' => 'изтриване за постоянно',
|
||||
'purge_help' => 'Пречисти изтрити записи',
|
||||
'ldap_extension_warning' => 'Изглежда, че нямате инсталирани LDAP разширения или не са пуснати на сървъра. Вие можете все пак да запишите настройките, но ще трябва да включите LDAP разширенията за PHP преди да синхронизирате с LDAP, в противен случай няма да можете да се логнете.',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'Драйвер на датабаза',
|
||||
'bs_table_storage' => 'Table Storage',
|
||||
'timezone' => 'Часова зона',
|
||||
'profile_edit' => 'Edit Profile',
|
||||
'profile_edit_help' => 'Allow users to edit their own profiles.',
|
||||
|
||||
];
|
||||
|
||||
@@ -14,6 +14,5 @@ return [
|
||||
'username_help_bottom' => 'Вашето потребителско име и е-майл адрес <em>може да</em> са еднакви или да не са, зависимост от вашата конфигурация. Ако не помните вашето потребителско име се свържете с Администратора. <br><br><strong>Потребители които нямат въведен е-майл адрес няма да получат линк за смяна на парола.</strong> ',
|
||||
'google_login' => 'Вход с Google Workspace',
|
||||
'google_login_failed' => 'Неуспешен вход с Google Login, пробвайте отново.',
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ return array(
|
||||
'success' => 'Вие влязохте успешно.',
|
||||
'code_required' => 'Необходим е код за двуфакторова идентификация.',
|
||||
'invalid_code' => 'Кода за двуфакторна идентификация е невалиден.',
|
||||
'enter_two_factor_code' => 'Please enter your two-factor authentication code.',
|
||||
'please_enroll' => 'Please enroll a device in two-factor authentication.',
|
||||
),
|
||||
|
||||
'signin' => array(
|
||||
|
||||
@@ -134,6 +134,7 @@ return [
|
||||
'lastname_firstinitial' => 'Фамилия и Първа буква от име (ivanov_i@example.com)',
|
||||
'firstinitial.lastname' => 'Първа буква от името и Фамилия (i.ivanov@example.com)',
|
||||
'firstnamelastinitial' => 'Име и първа буква от фамилия (ivani@example.com)',
|
||||
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
|
||||
'first_name' => 'Собствено име',
|
||||
'first_name_format' => 'Име (jane@example.com)',
|
||||
'files' => 'Файлове',
|
||||
@@ -157,7 +158,7 @@ return [
|
||||
'image_upload' => 'Качване на изображение',
|
||||
'filetypes_accepted_help' => 'Позволенo разширенe на файлa :types. Максимално позволен размер :size.|Позволени разширения на файлове са :types. Максимално позволен размер :size.',
|
||||
'filetypes_size_help' => 'Максимално позволен размер на файла е :size.',
|
||||
'image_filetypes_help' => 'Файлов формат в jpg, webp, png, gif и svg. Максимален размер е :size .',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.',
|
||||
'unaccepted_image_type' => 'Снимката не може да се прочете. Типовете файлови разширения са jpg, webp, png, gif и svg. Разширението на този файл е :mimetype.',
|
||||
'import' => 'Зареждане',
|
||||
'import_this_file' => 'Асоциирайте полетата и обработете този файл',
|
||||
@@ -239,6 +240,7 @@ return [
|
||||
'restored' => 'възстановени',
|
||||
'restore' => 'Възстановяване',
|
||||
'requestable_models' => 'Изискуеми Модели',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requested' => 'Изискан',
|
||||
'requested_date' => 'Дата на заявката',
|
||||
'requested_assets' => 'Изискуеми активи',
|
||||
@@ -526,6 +528,7 @@ return [
|
||||
'permission_denied_superuser_demo' => 'Разрешението е отказано. Не можете да актуализирате потребителска информация за суперадминистратори в демо версията.',
|
||||
'pwd_reset_not_sent' => 'Потребителят не е активиран, синхронизиран е с LDAP или няма имейл адрес',
|
||||
'error_sending_email' => 'Възникна грешка при изпращане на имейл',
|
||||
'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe <a href=":link">return to the dashboard</a>, or contact your administrator.',
|
||||
'bulk' => [
|
||||
'delete' =>
|
||||
[
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => 'Personal API Keys',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they
|
||||
will not be visible to you again.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'api_base_url' => 'Your API base url is located at:',
|
||||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'API tokens are set to expire in:',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to
|
||||
find specific API endpoints and additional API documentation.',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Location does not exist.',
|
||||
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ',
|
||||
'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
|
||||
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
|
||||
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'Length of asset tags, including zerofill',
|
||||
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
|
||||
'oauth_title' => 'OAuth API Settings',
|
||||
'oauth_clients' => 'OAuth Clients',
|
||||
'oauth' => 'OAuth',
|
||||
'oauth_help' => 'Oauth Endpoint Settings',
|
||||
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
|
||||
'oauth_secret' => 'Secret',
|
||||
'oauth_authorized_apps' => 'Authorized Applications',
|
||||
'oauth_redirect_url' => 'Redirect URL',
|
||||
'oauth_name_help' => ' Something your users will recognize and trust.',
|
||||
'oauth_scopes' => 'Scopes',
|
||||
'oauth_callback_url' => 'Your application authorization callback URL.',
|
||||
'create_client' => 'Create Client',
|
||||
'no_scopes' => 'No scopes',
|
||||
'asset_tag_title' => 'Update Asset Tag Settings',
|
||||
'barcode_title' => 'Update Barcode Settings',
|
||||
'barcodes' => 'Barcodes',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'Labels',
|
||||
'labels_title' => 'Update Label Settings',
|
||||
'labels_help' => 'Label sizes & settings',
|
||||
'purge' => 'Purge',
|
||||
'purge_keywords' => 'permanently delete',
|
||||
'purge_help' => 'Purge Deleted Records',
|
||||
'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'Database Driver',
|
||||
'bs_table_storage' => 'Table Storage',
|
||||
'timezone' => 'Timezone',
|
||||
'profile_edit' => 'Edit Profile',
|
||||
'profile_edit_help' => 'Allow users to edit their own profiles.',
|
||||
|
||||
];
|
||||
|
||||
@@ -14,6 +14,5 @@ return [
|
||||
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
|
||||
'google_login' => 'Login with Google Workspace',
|
||||
'google_login_failed' => 'Google Login failed, please try again.',
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ return array(
|
||||
'success' => 'You have successfully logged in.',
|
||||
'code_required' => 'Two-factor code is required.',
|
||||
'invalid_code' => 'Two-factor code is invalid.',
|
||||
'enter_two_factor_code' => 'Please enter your two-factor authentication code.',
|
||||
'please_enroll' => 'Please enroll a device in two-factor authentication.',
|
||||
),
|
||||
|
||||
'signin' => array(
|
||||
|
||||
@@ -134,6 +134,7 @@ return [
|
||||
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
|
||||
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
|
||||
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
|
||||
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
|
||||
'first_name' => 'First Name',
|
||||
'first_name_format' => 'First Name (jane@example.com)',
|
||||
'files' => 'Files',
|
||||
@@ -157,7 +158,7 @@ return [
|
||||
'image_upload' => 'Upload Image',
|
||||
'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.',
|
||||
'filetypes_size_help' => 'Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, and svg. Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.',
|
||||
'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.',
|
||||
'import' => 'Import',
|
||||
'import_this_file' => 'Map fields and process this file',
|
||||
@@ -239,6 +240,7 @@ return [
|
||||
'restored' => 'restored',
|
||||
'restore' => 'Restore',
|
||||
'requestable_models' => 'Requestable Models',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requested' => 'Requested',
|
||||
'requested_date' => 'Requested Date',
|
||||
'requested_assets' => 'Requested Assets',
|
||||
@@ -526,6 +528,7 @@ return [
|
||||
'permission_denied_superuser_demo' => 'Permission denied. You cannot update user information for superadmins on the demo.',
|
||||
'pwd_reset_not_sent' => 'User is not activated, is LDAP synced, or does not have an email address',
|
||||
'error_sending_email' => 'Error sending email',
|
||||
'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe <a href=":link">return to the dashboard</a>, or contact your administrator.',
|
||||
'bulk' => [
|
||||
'delete' =>
|
||||
[
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => 'Personal API Keys',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they
|
||||
will not be visible to you again.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'api_base_url' => 'Your API base url is located at:',
|
||||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'API tokens are set to expire in:',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to
|
||||
find specific API endpoints and additional API documentation.',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Location does not exist.',
|
||||
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ',
|
||||
'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
|
||||
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
|
||||
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
|
||||
'assigned_assets' => 'Assigned Assets',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'Length of asset tags, including zerofill',
|
||||
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
|
||||
'oauth_title' => 'OAuth API Settings',
|
||||
'oauth_clients' => 'OAuth Clients',
|
||||
'oauth' => 'OAuth',
|
||||
'oauth_help' => 'Oauth Endpoint Settings',
|
||||
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
|
||||
'oauth_secret' => 'Secret',
|
||||
'oauth_authorized_apps' => 'Authorized Applications',
|
||||
'oauth_redirect_url' => 'Redirect URL',
|
||||
'oauth_name_help' => ' Something your users will recognize and trust.',
|
||||
'oauth_scopes' => 'Scopes',
|
||||
'oauth_callback_url' => 'Your application authorization callback URL.',
|
||||
'create_client' => 'Create Client',
|
||||
'no_scopes' => 'No scopes',
|
||||
'asset_tag_title' => 'Update Asset Tag Settings',
|
||||
'barcode_title' => 'Update Barcode Settings',
|
||||
'barcodes' => 'Barcodes',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'Labels',
|
||||
'labels_title' => 'Update Label Settings',
|
||||
'labels_help' => 'Label sizes & settings',
|
||||
'purge' => 'Purge',
|
||||
'purge_keywords' => 'permanently delete',
|
||||
'purge_help' => 'Purge Deleted Records',
|
||||
'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'Database Driver',
|
||||
'bs_table_storage' => 'Table Storage',
|
||||
'timezone' => 'Timezone',
|
||||
'profile_edit' => 'Edit Profile',
|
||||
'profile_edit_help' => 'Allow users to edit their own profiles.',
|
||||
|
||||
];
|
||||
|
||||
@@ -14,6 +14,5 @@ return [
|
||||
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
|
||||
'google_login' => 'Login with Google Workspace',
|
||||
'google_login_failed' => 'Google Login failed, please try again.',
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ return array(
|
||||
'success' => 'You have successfully logged in.',
|
||||
'code_required' => 'Two-factor code is required.',
|
||||
'invalid_code' => 'Two-factor code is invalid.',
|
||||
'enter_two_factor_code' => 'Please enter your two-factor authentication code.',
|
||||
'please_enroll' => 'Please enroll a device in two-factor authentication.',
|
||||
),
|
||||
|
||||
'signin' => array(
|
||||
|
||||
@@ -134,6 +134,7 @@ return [
|
||||
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
|
||||
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
|
||||
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
|
||||
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
|
||||
'first_name' => 'First Name',
|
||||
'first_name_format' => 'First Name (jane@example.com)',
|
||||
'files' => 'Files',
|
||||
@@ -157,7 +158,7 @@ return [
|
||||
'image_upload' => 'Upload Image',
|
||||
'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.',
|
||||
'filetypes_size_help' => 'Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, and svg. Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.',
|
||||
'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.',
|
||||
'import' => 'Import',
|
||||
'import_this_file' => 'Map fields and process this file',
|
||||
@@ -239,6 +240,7 @@ return [
|
||||
'restored' => 'restored',
|
||||
'restore' => 'Restore',
|
||||
'requestable_models' => 'Requestable Models',
|
||||
'requestable_items' => 'Requestable Items',
|
||||
'requested' => 'Requested',
|
||||
'requested_date' => 'Requested Date',
|
||||
'requested_assets' => 'Requested Assets',
|
||||
@@ -526,6 +528,7 @@ return [
|
||||
'permission_denied_superuser_demo' => 'Permission denied. You cannot update user information for superadmins on the demo.',
|
||||
'pwd_reset_not_sent' => 'User is not activated, is LDAP synced, or does not have an email address',
|
||||
'error_sending_email' => 'Error sending email',
|
||||
'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe <a href=":link">return to the dashboard</a>, or contact your administrator.',
|
||||
'bulk' => [
|
||||
'delete' =>
|
||||
[
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
return array(
|
||||
'personal_api_keys' => 'Osobní API klíče',
|
||||
'api_key_warning' => 'Při generování tokenu API se ujistěte, že jej ihned zkopírujete, protože
|
||||
nebudou viditelné.',
|
||||
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
|
||||
'api_base_url' => 'Základní adresa API je umístěna na:',
|
||||
'api_base_url_endpoint' => '/<endpoint>',
|
||||
'api_token_expiration_time' => 'API tokeny vyprší:',
|
||||
'api_reference' => 'Zkontrolujte prosím <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> pro
|
||||
nalezení konkrétního koncového bodu a další API dokumentaci.',
|
||||
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
|
||||
'profile_updated' => 'Account successfully updated',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Místo neexistuje.',
|
||||
'assoc_users' => 'Toto umístění je spojeno s alespoň jedním uživatelem a nemůže být smazáno. Aktualizujte uživatele aby nenáleželi k tomuto umístění a zkuste to znovu. ',
|
||||
'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
|
||||
'assoc_assets' => 'Toto umístění je spojeno s alespoň jedním majetkem a nemůže být smazáno. Aktualizujte majetky tak aby nenáleželi k tomuto umístění a zkuste to znovu. ',
|
||||
'assoc_child_loc' => 'Toto umístění je nadřazené alespoň jednomu umístění a nelze jej smazat. Aktualizujte své umístění tak, aby na toto umístění již neodkazovalo a zkuste to znovu. ',
|
||||
'assigned_assets' => 'Přiřazený majetek',
|
||||
|
||||
@@ -287,8 +287,18 @@ return [
|
||||
'zerofill_count' => 'Délka značek majetku včetně zerofill',
|
||||
'username_format_help' => 'Toto nastavení bude použito pouze v případě, že není zadáno uživatelské jméno a my pro vás musíme vygenerovat uživatelské jméno.',
|
||||
'oauth_title' => 'Nastavení OAuth API',
|
||||
'oauth_clients' => 'OAuth Clients',
|
||||
'oauth' => 'OAuth',
|
||||
'oauth_help' => 'Nastavení koncových bodů Oauth',
|
||||
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
|
||||
'oauth_secret' => 'Secret',
|
||||
'oauth_authorized_apps' => 'Authorized Applications',
|
||||
'oauth_redirect_url' => 'Redirect URL',
|
||||
'oauth_name_help' => ' Something your users will recognize and trust.',
|
||||
'oauth_scopes' => 'Scopes',
|
||||
'oauth_callback_url' => 'Your application authorization callback URL.',
|
||||
'create_client' => 'Create Client',
|
||||
'no_scopes' => 'No scopes',
|
||||
'asset_tag_title' => 'Aktualizovat nastavení inventárních čísel',
|
||||
'barcode_title' => 'Aktualizovat nastavení čárového kódu',
|
||||
'barcodes' => 'Čárové kódy',
|
||||
@@ -317,7 +327,6 @@ return [
|
||||
'labels' => 'Štítky',
|
||||
'labels_title' => 'Upravit nastavení štítků',
|
||||
'labels_help' => 'Velikost štítků & nastavení',
|
||||
'purge' => 'Smazat',
|
||||
'purge_keywords' => 'trvale odstranit',
|
||||
'purge_help' => 'Vymazat smazané záznamy',
|
||||
'ldap_extension_warning' => 'Nevypadá to, že LDAP rozšíření je nainstalováno nebo povoleno na tomto serveru. Stále můžete uložit vaše nastavení, ale budete muset povolit LDAP rozšíření pro PHP, než bude fungovat LDAP synchronizace nebo přihlášení.',
|
||||
@@ -364,5 +373,7 @@ return [
|
||||
'database_driver' => 'Ovladač databáze',
|
||||
'bs_table_storage' => 'Úložiště tabulky',
|
||||
'timezone' => 'Timezone',
|
||||
'profile_edit' => 'Edit Profile',
|
||||
'profile_edit_help' => 'Allow users to edit their own profiles.',
|
||||
|
||||
];
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user