Compare commits
158 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
336d8e6574 | ||
|
|
dfbff27483 | ||
|
|
24ce34c8d7 | ||
|
|
7abb1f960c | ||
|
|
ec7df11d73 | ||
|
|
64fa7e23fc | ||
|
|
93ad59466b | ||
|
|
4b7f45a15e | ||
|
|
83f21d0ddf | ||
|
|
2906a89442 | ||
|
|
50f55b4308 | ||
|
|
a8028e7dd0 | ||
|
|
15abc84ab0 | ||
|
|
8a09211310 | ||
|
|
42fcd29200 | ||
|
|
0cfc0a4bee | ||
|
|
64f83f9a5f | ||
|
|
dc2b58f865 | ||
|
|
34ebc629c2 | ||
|
|
d1b45a83b8 | ||
|
|
01a8701a8c | ||
|
|
67fe53e32a | ||
|
|
7f6b8cc43d | ||
|
|
5fe999eb02 | ||
|
|
ea429d650e | ||
|
|
7fe7d56999 | ||
|
|
4f89dfee49 | ||
|
|
017534bc07 | ||
|
|
5540069cce | ||
|
|
e9a4ff8e74 | ||
|
|
1ad56760ce | ||
|
|
5582949008 | ||
|
|
f878e0ad66 | ||
|
|
178e440951 | ||
|
|
321be4733d | ||
|
|
cab4fa1687 | ||
|
|
4804e5b3ab | ||
|
|
885ab64c2e | ||
|
|
8624531f78 | ||
|
|
db0c0e7908 | ||
|
|
d77a47765e | ||
|
|
05c0819776 | ||
|
|
16f963fa3d | ||
|
|
e032cf1fda | ||
|
|
10c26f38c4 | ||
|
|
d6b8222371 | ||
|
|
2c5abaaea4 | ||
|
|
c1a0653847 | ||
|
|
9226c8292d | ||
|
|
5fafa81dc1 | ||
|
|
b30d1dce89 | ||
|
|
2dad27eed6 | ||
|
|
f5ffda8053 | ||
|
|
5703b95de3 | ||
|
|
d406dc43c2 | ||
|
|
2ce44bd4e6 | ||
|
|
15b96f304b | ||
|
|
ed931ef0cd | ||
|
|
bf4ee18123 | ||
|
|
70af10ae6c | ||
|
|
9892e5bf60 | ||
|
|
b9a8d45c07 | ||
|
|
7794c2f44b | ||
|
|
eedc14401a | ||
|
|
4e14d70427 | ||
|
|
2a71690aaf | ||
|
|
e4da00ca82 | ||
|
|
4fd14e5859 | ||
|
|
441f1fbb64 | ||
|
|
bf194d7794 | ||
|
|
d06e3dd892 | ||
|
|
6b25b53462 | ||
|
|
6d79c9f3e2 | ||
|
|
a36957dd77 | ||
|
|
2f3499e4b9 | ||
|
|
3536d08477 | ||
|
|
ee3166cdc2 | ||
|
|
7a117a22c8 | ||
|
|
9a66f6a254 | ||
|
|
5e94726ec1 | ||
|
|
66c3559e1c | ||
|
|
413e44be2f | ||
|
|
ebc35c4519 | ||
|
|
cd963179fd | ||
|
|
796a0ebdaa | ||
|
|
474f24e40e | ||
|
|
b3a0f86431 | ||
|
|
1a31231569 | ||
|
|
f1d4087317 | ||
|
|
f4069e00cd | ||
|
|
8650faf0d8 | ||
|
|
796ef741e8 | ||
|
|
36ae6f9430 | ||
|
|
1945b97b72 | ||
|
|
392e61688d | ||
|
|
db82e06665 | ||
|
|
ac5c6123bc | ||
|
|
8add47739e | ||
|
|
eac8e0bdba | ||
|
|
2815e0d36e | ||
|
|
2e998b110f | ||
|
|
f45c963428 | ||
|
|
2fec40d7df | ||
|
|
215beb9d8a | ||
|
|
b0c61ee044 | ||
|
|
16fb2213b5 | ||
|
|
a0d0645453 | ||
|
|
1ef336a08b | ||
|
|
aa3aa78204 | ||
|
|
db0a078c0b | ||
|
|
1cf1278b3b | ||
|
|
70648dedd3 | ||
|
|
9634dde0dd | ||
|
|
077caa29f8 | ||
|
|
a87478d3ac | ||
|
|
44349db597 | ||
|
|
c70ae19c28 | ||
|
|
55fdc86e02 | ||
|
|
0721ab8bbf | ||
|
|
00c8a1ee21 | ||
|
|
1fc71a4111 | ||
|
|
0c4768fd2a | ||
|
|
f9647614ab | ||
|
|
a05795420a | ||
|
|
42d86bf57b | ||
|
|
201b52baf8 | ||
|
|
f510b9c2a9 | ||
|
|
75bd365ca1 | ||
|
|
153c30eda8 | ||
|
|
be7e6ed847 | ||
|
|
115109f612 | ||
|
|
037a912e21 | ||
|
|
984db1ef44 | ||
|
|
c8fe929e09 | ||
|
|
181dc5127f | ||
|
|
303fc39966 | ||
|
|
730c2a6821 | ||
|
|
bc10761b49 | ||
|
|
cf14a0222c | ||
|
|
b18b3812df | ||
|
|
bb095641c2 | ||
|
|
b78e610ce3 | ||
|
|
884b6b0270 | ||
|
|
7a1ab1292c | ||
|
|
87bb741013 | ||
|
|
5fe2083688 | ||
|
|
2ee84c2675 | ||
|
|
39a5b6b426 | ||
|
|
c6ce928567 | ||
|
|
950a23b0f4 | ||
|
|
b4fac3e4ae | ||
|
|
548e483ef8 | ||
|
|
bad6b862ca | ||
|
|
4e336e11ee | ||
|
|
8588e9ebf1 | ||
|
|
11524d0f7d | ||
|
|
d0bfd8dfd2 | ||
|
|
312200bf44 |
@@ -2522,6 +2522,33 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "UniversalSuperBox",
|
||||
"name": "Dalton Durst",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/21966173?v=4",
|
||||
"profile": "https://daltondur.st",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "TenOfTens",
|
||||
"name": "TenOfTens",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/48162670?v=4",
|
||||
"profile": "https://github.com/TenOfTens",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "savornicesei",
|
||||
"name": "Simona Avornicesei",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/917232?v=4",
|
||||
"profile": "http://www.avornicesei.com",
|
||||
"contributions": [
|
||||
"test"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -145,10 +145,12 @@ APP_LOG_MAX_FILES=10
|
||||
APP_LOCKED=false
|
||||
APP_CIPHER=AES-256-CBC
|
||||
APP_FORCE_TLS=false
|
||||
APP_ALLOW_INSECURE_HOSTS=false
|
||||
GOOGLE_MAPS_API=
|
||||
LDAP_MEM_LIM=500M
|
||||
LDAP_TIME_LIM=600
|
||||
IMPORT_TIME_LIMIT=600
|
||||
IMPORT_MEMORY_LIMIT=500M
|
||||
REPORT_TIME_LIMIT=12000
|
||||
|
||||
REQUIRE_SAML=false
|
||||
API_THROTTLE_PER_MINUTE=120
|
||||
@@ -77,6 +77,8 @@ COPY . /var/www/html
|
||||
|
||||
RUN a2enmod rewrite
|
||||
|
||||
COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf
|
||||
|
||||
############ INITIAL APPLICATION SETUP #####################
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
@@ -32,6 +32,8 @@ RUN apk add --no-cache \
|
||||
mysql-client \
|
||||
tini
|
||||
|
||||
COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf
|
||||
|
||||
# Where apache's PID lives
|
||||
RUN mkdir -p /run/apache2 && chown apache:apache /run/apache2
|
||||
|
||||
|
||||
@@ -98,5 +98,6 @@ VOLUME [ "/var/lib/snipeit" ]
|
||||
|
||||
COPY --chown=www-data:www-data docker/docker-secrets.env /var/www/html/.env
|
||||
COPY --chmod=655 docker/docker-entrypoint.sh /usr/local/bin/docker-snipeit-entrypoint
|
||||
COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf
|
||||
ENTRYPOINT [ "/usr/local/bin/docker-snipeit-entrypoint" ]
|
||||
CMD [ "/usr/local/bin/docker-php-entrypoint", "php-fpm" ]
|
||||
@@ -1,5 +1,5 @@
|
||||
 [](https://crowdin.com/project/snipe-it) [](https://hub.docker.com/r/snipe/snipe-it/) [](https://twitter.com/snipeitapp) [](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
|
||||
[](#contributors) [](https://discord.gg/yZFtShAcKk) [](https://huntr.dev)
|
||||
[](#contributors) [](https://discord.gg/yZFtShAcKk) [](https://huntr.dev)
|
||||
|
||||
## Snipe-IT - Open Source Asset Management System
|
||||
|
||||
@@ -130,7 +130,7 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
|
||||
| [<img src="https://avatars.githubusercontent.com/u/11823649?v=4" width="110px;"/><br /><sub>Renee Margaret McConahy</sub>](https://github.com/nepella)<br />[💻](https://github.com/snipe/snipe-it/commits?author=nepella "Code") | [<img src="https://avatars.githubusercontent.com/u/5553884?v=4" width="110px;"/><br /><sub>JohnnyPicnic</sub>](https://github.com/JohnnyPicnic)<br />[💻](https://github.com/snipe/snipe-it/commits?author=JohnnyPicnic "Code") | [<img src="https://avatars.githubusercontent.com/u/8799594?v=4" width="110px;"/><br /><sub>markbrule</sub>](https://github.com/markbrule)<br />[💻](https://github.com/snipe/snipe-it/commits?author=markbrule "Code") | [<img src="https://avatars.githubusercontent.com/u/1962801?v=4" width="110px;"/><br /><sub>Mike Campbell</sub>](https://github.com/mikecmpbll)<br />[💻](https://github.com/snipe/snipe-it/commits?author=mikecmpbll "Code") | [<img src="https://avatars.githubusercontent.com/u/11973217?v=4" width="110px;"/><br /><sub>tbrconnect</sub>](https://github.com/tbrconnect)<br />[💻](https://github.com/snipe/snipe-it/commits?author=tbrconnect "Code") | [<img src="https://avatars.githubusercontent.com/u/12447225?v=4" width="110px;"/><br /><sub>kcoyo</sub>](https://github.com/kcoyo)<br />[💻](https://github.com/snipe/snipe-it/commits?author=kcoyo "Code") | [<img src="https://avatars.githubusercontent.com/u/494017?v=4" width="110px;"/><br /><sub>Travis Miller</sub>](https://travismiller.com/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=travismiller "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/8735148?v=4" width="110px;"/><br /><sub>Petri Asikainen</sub>](https://github.com/PetriAsi)<br />[💻](https://github.com/snipe/snipe-it/commits?author=PetriAsi "Code") | [<img src="https://avatars.githubusercontent.com/u/11424540?v=4" width="110px;"/><br /><sub>derdeagle</sub>](https://github.com/derdeagle)<br />[💻](https://github.com/snipe/snipe-it/commits?author=derdeagle "Code") | [<img src="https://avatars.githubusercontent.com/u/176950?v=4" width="110px;"/><br /><sub>Mike Frysinger</sub>](https://wh0rd.org/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vapier "Code") | [<img src="https://avatars.githubusercontent.com/u/22044358?v=4" width="110px;"/><br /><sub>ALPHA</sub>](https://github.com/AL4AL)<br />[💻](https://github.com/snipe/snipe-it/commits?author=AL4AL "Code") | [<img src="https://avatars.githubusercontent.com/u/1042587?v=4" width="110px;"/><br /><sub>FliegenKLATSCH</sub>](https://www.ifern.de)<br />[💻](https://github.com/snipe/snipe-it/commits?author=FliegenKLATSCH "Code") | [<img src="https://avatars.githubusercontent.com/u/442138?v=4" width="110px;"/><br /><sub>Jeremy Price</sub>](https://github.com/jerm)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jerm "Code") | [<img src="https://avatars.githubusercontent.com/u/84392209?v=4" width="110px;"/><br /><sub>Toreg87</sub>](https://github.com/Toreg87)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Toreg87 "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/67638596?v=4" width="110px;"/><br /><sub>Matthew Nickson</sub>](https://github.com/Computroniks)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Computroniks "Code") | [<img src="https://avatars.githubusercontent.com/u/1646397?v=4" width="110px;"/><br /><sub>Jethro Nederhof</sub>](https://jethron.id.au)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jethron "Code") | [<img src="https://avatars.githubusercontent.com/u/23289826?v=4" width="110px;"/><br /><sub>Oskar Stenberg</sub>](https://github.com/01ste02)<br />[💻](https://github.com/snipe/snipe-it/commits?author=01ste02 "Code") | [<img src="https://avatars.githubusercontent.com/u/82208283?v=4" width="110px;"/><br /><sub>Robert-Azelis</sub>](https://github.com/Robert-Azelis)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Robert-Azelis "Code") | [<img src="https://avatars.githubusercontent.com/u/60648387?v=4" width="110px;"/><br /><sub>Alexander William Smith</sub>](https://github.com/alwism)<br />[💻](https://github.com/snipe/snipe-it/commits?author=alwism "Code") | [<img src="https://avatars.githubusercontent.com/u/24418301?v=4" width="110px;"/><br /><sub>LEITWERK AG</sub>](https://www.leitwerk.de/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=leitwerk-ag "Code") | [<img src="https://avatars.githubusercontent.com/u/1911435?v=4" width="110px;"/><br /><sub>Adam</sub>](http://www.aboutcher.co.uk)<br />[💻](https://github.com/snipe/snipe-it/commits?author=adamboutcher "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/16104273?v=4" width="110px;"/><br /><sub>Ian</sub>](https://snksrv.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=sneak-it "Code") | [<img src="https://avatars.githubusercontent.com/u/4023909?v=4" width="110px;"/><br /><sub>Shao Yu-Lung (Allen)</sub>](http://blog.bestlong.idv.tw/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=bestlong "Code") | [<img src="https://avatars.githubusercontent.com/u/76475453?v=4" width="110px;"/><br /><sub>Haxatron</sub>](https://github.com/Haxatron)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Haxatron "Code") | [<img src="https://avatars.githubusercontent.com/u/3842948?v=4" width="110px;"/><br /><sub>Bradley Coudriet</sub>](http://bjcpgd.cias.rit.edu)<br />[💻](https://github.com/snipe/snipe-it/commits?author=exula "Code") |
|
||||
| [<img src="https://avatars.githubusercontent.com/u/16104273?v=4" width="110px;"/><br /><sub>Ian</sub>](https://snksrv.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=sneak-it "Code") | [<img src="https://avatars.githubusercontent.com/u/4023909?v=4" width="110px;"/><br /><sub>Shao Yu-Lung (Allen)</sub>](http://blog.bestlong.idv.tw/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=bestlong "Code") | [<img src="https://avatars.githubusercontent.com/u/76475453?v=4" width="110px;"/><br /><sub>Haxatron</sub>](https://github.com/Haxatron)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Haxatron "Code") | [<img src="https://avatars.githubusercontent.com/u/3842948?v=4" width="110px;"/><br /><sub>Bradley Coudriet</sub>](http://bjcpgd.cias.rit.edu)<br />[💻](https://github.com/snipe/snipe-it/commits?author=exula "Code") | [<img src="https://avatars.githubusercontent.com/u/21966173?v=4" width="110px;"/><br /><sub>Dalton Durst</sub>](https://daltondur.st)<br />[💻](https://github.com/snipe/snipe-it/commits?author=UniversalSuperBox "Code") | [<img src="https://avatars.githubusercontent.com/u/48162670?v=4" width="110px;"/><br /><sub>TenOfTens</sub>](https://github.com/TenOfTens)<br />[💻](https://github.com/snipe/snipe-it/commits?author=TenOfTens "Code") | [<img src="https://avatars.githubusercontent.com/u/917232?v=4" width="110px;"/><br /><sub>Simona Avornicesei</sub>](http://www.avornicesei.com)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=savornicesei "Tests") |
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
|
||||
|
||||
@@ -40,7 +40,7 @@ class FixDoubleEscape extends Command
|
||||
|
||||
$tables = [
|
||||
'\App\Models\Asset' => ['name'],
|
||||
'\App\Models\License' => ['name'],
|
||||
'\App\Models\License' => ['name', 'license_name'],
|
||||
'\App\Models\Consumable' => ['name'],
|
||||
'\App\Models\Accessory' => ['name'],
|
||||
'\App\Models\Component' => ['name'],
|
||||
@@ -53,7 +53,7 @@ class FixDoubleEscape extends Command
|
||||
'\App\Models\Group' => ['name'],
|
||||
'\App\Models\Department' => ['name'],
|
||||
'\App\Models\Location' => ['name'],
|
||||
'\App\Models\User' => ['first_name', 'last_name'],
|
||||
'\App\Models\User' => ['first_name', 'last_name', 'jobtitle'],
|
||||
];
|
||||
|
||||
$count = array();
|
||||
@@ -69,10 +69,14 @@ class FixDoubleEscape extends Command
|
||||
$count[$classname]['classname']++;
|
||||
$count[$classname][$field] = 0;
|
||||
|
||||
foreach($classname::where("$field",'LIKE','%&%')->get() as $row) {
|
||||
$this->info('Updating '.$field.' for '.$classname);
|
||||
$row->{$field} = html_entity_decode($row->{$field},ENT_QUOTES);
|
||||
$row->save();
|
||||
foreach($classname::where("$field",'LIKE','%;%')->get() as $row) {
|
||||
|
||||
$fixed = html_entity_decode($row->{$field});
|
||||
if ($row->save()) {
|
||||
$this->info('Updating '.$field.' for '.$classname.' to '.$row->{$field}.' to '.$fixed);
|
||||
} else {
|
||||
$this->error('Could NOT update '.$field.' for '.$classname.' to '.$row->{$field}.' to '.$fixed.': '.$row->getErrors());
|
||||
}
|
||||
$count[$classname][$field]++;
|
||||
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ class LdapSync extends Command
|
||||
$ldap_result_last_name = Setting::getSettings()->ldap_lname_field;
|
||||
$ldap_result_first_name = Setting::getSettings()->ldap_fname_field;
|
||||
|
||||
$ldap_result_active_flag = Setting::getSettings()->ldap_active_flag_field;
|
||||
$ldap_result_active_flag = Setting::getSettings()->ldap_active_flag;
|
||||
$ldap_result_emp_num = Setting::getSettings()->ldap_emp_num;
|
||||
$ldap_result_email = Setting::getSettings()->ldap_email;
|
||||
$ldap_result_phone = Setting::getSettings()->ldap_phone_field;
|
||||
@@ -170,7 +170,6 @@ class LdapSync extends Command
|
||||
$pass = bcrypt($tmp_pass);
|
||||
|
||||
for ($i = 0; $i < $results["count"]; $i++) {
|
||||
if (empty($ldap_result_active_flag) || $results[$i][$ldap_result_active_flag][0] == "TRUE") {
|
||||
|
||||
$item = array();
|
||||
$item["username"] = isset($results[$i][$ldap_result_username][0]) ? $results[$i][$ldap_result_username][0] : "";
|
||||
@@ -192,6 +191,7 @@ class LdapSync extends Command
|
||||
|
||||
|
||||
$user = User::where('username', $item["username"])->first();
|
||||
|
||||
if ($user) {
|
||||
// Updating an existing user.
|
||||
$item["createorupdate"] = 'updated';
|
||||
@@ -199,7 +199,7 @@ class LdapSync extends Command
|
||||
// Creating a new user.
|
||||
$user = new User;
|
||||
$user->password = $pass;
|
||||
$user->activated = 0;
|
||||
$user->activated = 1; // newly created users can log in by default, unless AD's UAC is in use, or an active flag is set (below)
|
||||
$item["createorupdate"] = 'created';
|
||||
}
|
||||
|
||||
@@ -213,8 +213,19 @@ class LdapSync extends Command
|
||||
$user->country = $item["country"];
|
||||
$user->department_id = $department->id;
|
||||
|
||||
// Sync activated state for Active Directory.
|
||||
if ( array_key_exists('useraccountcontrol', $results[$i]) ) {
|
||||
if ( !empty($ldap_result_active_flag)) { // IF we have an 'active' flag set....
|
||||
// ....then *most* things that are truthy will activate the user. Anything falsey will deactivate them.
|
||||
// (Specifically, we don't handle a value of '0.0' correctly)
|
||||
$raw_value = @$results[$i][$ldap_result_active_flag][0];
|
||||
$filter_var = filter_var($raw_value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
|
||||
$boolean_cast = (bool)$raw_value;
|
||||
|
||||
$user->activated = $filter_var ?? $boolean_cast; // if filter_var() was true or false, use that. If it's null, use the $boolean_cast
|
||||
|
||||
} elseif ( array_key_exists('useraccountcontrol', $results[$i]) ) {
|
||||
// ....otherwise, (ie if no 'active' LDAP flag is defined), IF the UAC setting exists,
|
||||
// ....then use the UAC setting on the account to determine can-log-in vs. cannot-log-in
|
||||
|
||||
/* The following is _probably_ the correct logic, but we can't use it because
|
||||
some users may have been dependent upon the previous behavior, and this
|
||||
could cause additional access to be available to users they don't want
|
||||
@@ -240,16 +251,14 @@ class LdapSync extends Command
|
||||
'262688', // 0x40220 NORMAL_ACCOUNT, PASSWD_NOTREQD, SMARTCARD_REQUIRED
|
||||
'328192', // 0x50200 NORMAL_ACCOUNT, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD
|
||||
'328224', // 0x50220 NORMAL_ACCOUNT, PASSWD_NOT_REQD, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD
|
||||
'4194816',// 0x400200 NORMAL_ACCOUNT, DONT_REQ_PREAUTH
|
||||
'4260352',// 0x410200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD, DONT_REQ_PREAUTH
|
||||
'1049088',// 0x100200 NORMAL_ACCOUNT, NOT_DELEGATED
|
||||
];
|
||||
$user->activated = ( in_array($results[$i]['useraccountcontrol'][0], $enabled_accounts) ) ? 1 : 0;
|
||||
}
|
||||
|
||||
// If we're not using AD, and there isn't an activated flag set, activate all users
|
||||
elseif (empty($ldap_result_active_flag)) {
|
||||
$user->activated = 1;
|
||||
}
|
||||
} /* implied 'else' here - leave the $user->activated flag alone. Newly-created accounts will be active.
|
||||
already-existing accounts will be however the administrator has set them */
|
||||
|
||||
if ($item['ldap_location_override'] == true) {
|
||||
$user->location_id = $item['location_id'];
|
||||
@@ -279,7 +288,6 @@ class LdapSync extends Command
|
||||
}
|
||||
|
||||
array_push($summary, $item);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||
use App\Helpers\Helper;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Log;
|
||||
use JsonException;
|
||||
|
||||
|
||||
class Handler extends ExceptionHandler
|
||||
@@ -26,6 +27,7 @@ class Handler extends ExceptionHandler
|
||||
\Illuminate\Validation\ValidationException::class,
|
||||
\Intervention\Image\Exception\NotSupportedException::class,
|
||||
\League\OAuth2\Server\Exception\OAuthServerException::class,
|
||||
JsonException::class
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -60,6 +62,12 @@ class Handler extends ExceptionHandler
|
||||
return redirect()->back()->with('error', trans('general.token_expired'));
|
||||
}
|
||||
|
||||
// Invalid JSON exception
|
||||
// TODO: don't understand why we have to do this when we have the invalidJson() method, below, but, well, whatever
|
||||
if ($e instanceof JsonException) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, 'invalid JSON'), 422);
|
||||
}
|
||||
|
||||
|
||||
// Handle Ajax requests that fail because the model doesn't exist
|
||||
if ($request->ajax() || $request->wantsJson()) {
|
||||
@@ -76,10 +84,12 @@ class Handler extends ExceptionHandler
|
||||
switch ($e->getStatusCode()) {
|
||||
case '404':
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, $statusCode . ' endpoint not found'), 404);
|
||||
case '405':
|
||||
case '429':
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, 'Too many requests'), 429);
|
||||
case '405':
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, 'Method not allowed'), 405);
|
||||
default:
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, $statusCode), 405);
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, $statusCode), $statusCode);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$this->authorize('view', Asset::class);
|
||||
$maintenances = AssetMaintenance::with('asset', 'asset.model','asset.location', 'supplier', 'asset.company', 'admin');
|
||||
|
||||
if ($request->filled('search')) {
|
||||
@@ -101,6 +102,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
// create a new model instance
|
||||
$assetMaintenance = new AssetMaintenance();
|
||||
$assetMaintenance->supplier_id = $request->input('supplier_id');
|
||||
@@ -153,6 +155,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function update(Request $request, $assetMaintenanceId = null)
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
// Check if the asset maintenance exists
|
||||
$assetMaintenance = AssetMaintenance::findOrFail($assetMaintenanceId);
|
||||
|
||||
@@ -216,6 +219,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function destroy($assetMaintenanceId)
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
// Check if the asset maintenance exists
|
||||
$assetMaintenance = AssetMaintenance::findOrFail($assetMaintenanceId);
|
||||
|
||||
@@ -241,6 +245,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function show($assetMaintenanceId)
|
||||
{
|
||||
$this->authorize('view', Asset::class);
|
||||
$assetMaintenance = AssetMaintenance::findOrFail($assetMaintenanceId);
|
||||
if (!Company::isCurrentUserHasAccess($assetMaintenance->asset)) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, 'You cannot view a maintenance for that asset'));
|
||||
|
||||
@@ -234,6 +234,7 @@ class AssetModelsController extends Controller
|
||||
public function selectlist(Request $request)
|
||||
{
|
||||
|
||||
$this->authorize('view.selectlists');
|
||||
$assetmodels = AssetModel::select([
|
||||
'models.id',
|
||||
'models.name',
|
||||
|
||||
@@ -55,7 +55,7 @@ class AssetsController extends Controller
|
||||
{
|
||||
|
||||
\Log::debug(Route::currentRouteName());
|
||||
|
||||
$filter_non_deprecable_assets = false;
|
||||
|
||||
/**
|
||||
* This looks MAD janky (and it is), but the AssetsController@index does a LOT of heavy lifting throughout the
|
||||
@@ -69,6 +69,7 @@ class AssetsController extends Controller
|
||||
* which would have been far worse of a mess. *sad face* - snipe (Sept 1, 2021)
|
||||
*/
|
||||
if (Route::currentRouteName()=='api.depreciation-report.index') {
|
||||
$filter_non_deprecable_assets = true;
|
||||
$transformer = 'App\Http\Transformers\DepreciationReportTransformer';
|
||||
$this->authorize('reports.view');
|
||||
} else {
|
||||
@@ -119,9 +120,24 @@ class AssetsController extends Controller
|
||||
'model.category', 'model.manufacturer', 'model.fieldset','supplier'); //it might be tempting to add 'assetlog' here, but don't. It blows up update-heavy users.
|
||||
|
||||
|
||||
if ($filter_non_deprecable_assets) {
|
||||
$non_deprecable_models = AssetModel::select('id')->whereNotNull('depreciation_id')->get();
|
||||
$assets->InModelList($non_deprecable_models->toArray());
|
||||
}
|
||||
|
||||
// These are used by the API to query against specific ID numbers.
|
||||
// They are also used by the individual searches on detail pages like
|
||||
// locations, etc.
|
||||
|
||||
|
||||
// Search custom fields by column name
|
||||
foreach ($all_custom_fields as $field) {
|
||||
if ($request->filled($field->db_column_name())) {
|
||||
$assets->where($field->db_column_name(), '=', $request->input($field->db_column_name()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($request->filled('status_id')) {
|
||||
$assets->where('assets.status_id', '=', $request->input('status_id'));
|
||||
}
|
||||
@@ -844,13 +860,18 @@ class AssetsController extends Controller
|
||||
$asset->status_id = $request->input('status_id');
|
||||
}
|
||||
|
||||
$checkin_at = null;
|
||||
if ($request->filled('checkin_at')) {
|
||||
$checkin_at = $request->input('checkin_at');
|
||||
}
|
||||
|
||||
if ($asset->save()) {
|
||||
event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note')));
|
||||
event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at));
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('success', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkin.success')));
|
||||
}
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('success', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkin.error')));
|
||||
return response()->json(Helper::formatStandardApiResponse('error', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkin.error')));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ class CategoriesController extends Controller
|
||||
*/
|
||||
public function selectlist(Request $request, $category_type = 'asset')
|
||||
{
|
||||
|
||||
$this->authorize('view.selectlists');
|
||||
$categories = Category::select([
|
||||
'id',
|
||||
'name',
|
||||
|
||||
@@ -159,7 +159,7 @@ class CompaniesController extends Controller
|
||||
*/
|
||||
public function selectlist(Request $request)
|
||||
{
|
||||
|
||||
$this->authorize('view.selectlists');
|
||||
$companies = Company::select([
|
||||
'companies.id',
|
||||
'companies.name',
|
||||
|
||||
@@ -168,6 +168,7 @@ class DepartmentsController extends Controller
|
||||
public function selectlist(Request $request)
|
||||
{
|
||||
|
||||
$this->authorize('view.selectlists');
|
||||
$departments = Department::select([
|
||||
'id',
|
||||
'name',
|
||||
|
||||
@@ -82,6 +82,10 @@ class LicensesController extends Controller
|
||||
$licenses = $licenses->TextSearch($request->input('search'));
|
||||
}
|
||||
|
||||
if ($request->input('deleted')=='true') {
|
||||
$licenses->onlyTrashed();
|
||||
}
|
||||
|
||||
|
||||
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which
|
||||
// case we override with the actual count, so we should return 0 items.
|
||||
|
||||
@@ -223,6 +223,8 @@ class LocationsController extends Controller
|
||||
public function selectlist(Request $request)
|
||||
{
|
||||
|
||||
$this->authorize('view.selectlists');
|
||||
|
||||
$locations = Location::select([
|
||||
'locations.id',
|
||||
'locations.name',
|
||||
|
||||
@@ -155,6 +155,7 @@ class ManufacturersController extends Controller
|
||||
public function selectlist(Request $request)
|
||||
{
|
||||
|
||||
$this->authorize('view.selectlists');
|
||||
$manufacturers = Manufacturer::select([
|
||||
'id',
|
||||
'name',
|
||||
|
||||
@@ -31,8 +31,8 @@ class PredefinedKitsController extends Controller
|
||||
|
||||
$offset = $request->input('offset', 0);
|
||||
$limit = $request->input('limit', 50);
|
||||
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
|
||||
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'assets_count';
|
||||
$order = $request->input('order') === 'desc' ? 'desc' : 'asc';
|
||||
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'name';
|
||||
$kits->orderBy($sort, $order);
|
||||
|
||||
$total = $kits->count();
|
||||
|
||||
@@ -196,7 +196,7 @@ class SettingsController extends Controller
|
||||
return response()->json(['message' => 'Success'], 200);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['message' => 'FARTS! Please check the channel name and webhook endpoint URL ('.$request->input('slack_endpoint').'). Slack responded with: '.$e->getMessage()], 400);
|
||||
return response()->json(['message' => 'Please check the channel name and webhook endpoint URL ('.$request->input('slack_endpoint').'). Slack responded with: '.$e->getMessage()], 400);
|
||||
}
|
||||
|
||||
//}
|
||||
|
||||
@@ -155,6 +155,8 @@ class SuppliersController extends Controller
|
||||
public function selectlist(Request $request)
|
||||
{
|
||||
|
||||
$this->authorize('view.selectlists');
|
||||
|
||||
$suppliers = Supplier::select([
|
||||
'id',
|
||||
'name',
|
||||
|
||||
@@ -50,6 +50,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->authorize('view', Asset::class);
|
||||
return view('asset_maintenances/index');
|
||||
}
|
||||
|
||||
@@ -66,6 +67,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
$asset = null;
|
||||
|
||||
if ($asset = Asset::find(request('asset_id'))) {
|
||||
@@ -96,6 +98,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
// create a new model instance
|
||||
$assetMaintenance = new AssetMaintenance();
|
||||
$assetMaintenance->supplier_id = $request->input('supplier_id');
|
||||
@@ -148,6 +151,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function edit($assetMaintenanceId = null)
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
// Check if the asset maintenance exists
|
||||
if (is_null($assetMaintenance = AssetMaintenance::find($assetMaintenanceId))) {
|
||||
// Redirect to the improvement management page
|
||||
@@ -200,6 +204,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function update(Request $request, $assetMaintenanceId = null)
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
// Check if the asset maintenance exists
|
||||
if (is_null($assetMaintenance = AssetMaintenance::find($assetMaintenanceId))) {
|
||||
// Redirect to the asset maintenance management page
|
||||
@@ -266,6 +271,7 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function destroy($assetMaintenanceId)
|
||||
{
|
||||
$this->authorize('edit', Asset::class);
|
||||
// Check if the asset maintenance exists
|
||||
if (is_null($assetMaintenance = AssetMaintenance::find($assetMaintenanceId))) {
|
||||
// Redirect to the asset maintenance management page
|
||||
@@ -294,6 +300,8 @@ class AssetMaintenancesController extends Controller
|
||||
*/
|
||||
public function show($assetMaintenanceId)
|
||||
{
|
||||
$this->authorize('view', Asset::class);
|
||||
|
||||
// Check if the asset maintenance exists
|
||||
if (is_null($assetMaintenance = AssetMaintenance::find($assetMaintenanceId))) {
|
||||
// Redirect to the asset maintenance management page
|
||||
|
||||
@@ -155,7 +155,6 @@ class AssetModelsController extends Controller
|
||||
$model->requestable = $request->input('requestable', '0');
|
||||
|
||||
|
||||
|
||||
$this->removeCustomFieldsDefaultValues($model);
|
||||
|
||||
if ($request->input('custom_fieldset')=='') {
|
||||
@@ -168,7 +167,6 @@ class AssetModelsController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($model->save()) {
|
||||
return redirect()->route("models.index")->with('success', trans('admin/models/message.update.success'));
|
||||
}
|
||||
@@ -463,7 +461,9 @@ class AssetModelsController extends Controller
|
||||
private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues)
|
||||
{
|
||||
foreach ($defaultValues as $customFieldId => $defaultValue) {
|
||||
if ($defaultValue) {
|
||||
if(is_array($defaultValue)){
|
||||
$model->defaultValues()->attach($customFieldId, ['default_value' => implode(', ', $defaultValue)]);
|
||||
}elseif ($defaultValue) {
|
||||
$model->defaultValues()->attach($customFieldId, ['default_value' => $defaultValue]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Assets;
|
||||
use App\Helpers\Helper;
|
||||
use App\Http\Controllers\CheckInOutRequest;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Actionlog;
|
||||
use App\Models\Asset;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -121,6 +122,24 @@ class BulkAssetsController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
$changed = [];
|
||||
$asset = Asset::where('id' ,$assetId)->get();
|
||||
|
||||
foreach ($this->update_array as $key => $value) {
|
||||
if ($this->update_array[$key] != $asset->toArray()[0][$key]) {
|
||||
$changed[$key]['old'] = $asset->toArray()[0][$key];
|
||||
$changed[$key]['new'] = $this->update_array[$key];
|
||||
}
|
||||
}
|
||||
|
||||
$logAction = new Actionlog();
|
||||
$logAction->item_type = Asset::class;
|
||||
$logAction->item_id = $assetId;
|
||||
$logAction->created_at = date("Y-m-d H:i:s");
|
||||
$logAction->user_id = Auth::id();
|
||||
$logAction->log_meta = json_encode($changed);
|
||||
$logAction->logaction('update');
|
||||
|
||||
DB::table('assets')
|
||||
->where('id', $assetId)
|
||||
->update($this->update_array);
|
||||
|
||||
@@ -87,6 +87,8 @@ class ForgotPasswordController extends Controller
|
||||
\Log::info('Password reset attempt: User '.$request->input('username').'failed with exception: '.$e );
|
||||
}
|
||||
|
||||
// Prevent timing attack to enumerate users.
|
||||
usleep(500000 + random_int(0, 1500000));
|
||||
|
||||
if ($response === \Password::RESET_LINK_SENT) {
|
||||
\Log::info('Password reset attempt: User '.$request->input('username').' WAS found, password reset sent');
|
||||
|
||||
@@ -75,6 +75,13 @@ class LoginController extends Controller
|
||||
return redirect()->intended('/');
|
||||
}
|
||||
|
||||
// If the environment is set to ALWAYS require SAML, go straight to the SAML route.
|
||||
// We don't need to check other settings, as this should override those.
|
||||
if (config('app.require_saml')) {
|
||||
return redirect()->route('saml.login');
|
||||
}
|
||||
|
||||
|
||||
if ($this->saml->isEnabled() && Setting::getSettings()->saml_forcelogin == "1" && !($request->has('nosaml') || $request->session()->has('error'))) {
|
||||
return redirect()->route('saml.login');
|
||||
}
|
||||
@@ -197,6 +204,12 @@ class LoginController extends Controller
|
||||
*/
|
||||
public function login(Request $request)
|
||||
{
|
||||
|
||||
//If the environment is set to ALWAYS require SAML, return access denied
|
||||
if (config('app.require_saml')) {
|
||||
return view('errors.403');
|
||||
}
|
||||
|
||||
if (Setting::getSettings()->login_common_disabled == "1") {
|
||||
return view('errors.403');
|
||||
}
|
||||
@@ -363,7 +376,7 @@ class LoginController extends Controller
|
||||
if (Google2FA::verifyKey($user->two_factor_secret, $secret)) {
|
||||
$user->two_factor_enrolled = 1;
|
||||
$user->save();
|
||||
$request->session()->put('2fa_authed', 'true');
|
||||
$request->session()->put('2fa_authed', $user->id);
|
||||
return redirect()->route('home')->with('success', 'You are logged in!');
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ class BulkAssetModelsController extends Controller
|
||||
|
||||
// If deleting....
|
||||
if ($request->input('bulk_actions')=='delete') {
|
||||
$this->authorize('delete', AssetModel::class);
|
||||
$valid_count = 0;
|
||||
foreach ($models as $model) {
|
||||
if ($model->assets_count == 0) {
|
||||
@@ -42,7 +43,7 @@ class BulkAssetModelsController extends Controller
|
||||
|
||||
// Otherwise display the bulk edit screen
|
||||
}
|
||||
|
||||
$this->authorize('update', AssetModel::class);
|
||||
$nochange = ['NC' => 'No Change'];
|
||||
return view('models/bulk-edit', compact('models'))
|
||||
->with('fieldset_list', $nochange + Helper::customFieldsetList())
|
||||
@@ -63,7 +64,8 @@ class BulkAssetModelsController extends Controller
|
||||
*/
|
||||
public function update(Request $request)
|
||||
{
|
||||
|
||||
$this->authorize('update', AssetModel::class);
|
||||
|
||||
$models_raw_array = $request->input('ids');
|
||||
$update_array = array();
|
||||
|
||||
@@ -103,6 +105,8 @@ class BulkAssetModelsController extends Controller
|
||||
*/
|
||||
public function destroy(Request $request)
|
||||
{
|
||||
$this->authorize('delete', AssetModel::class);
|
||||
|
||||
$models_raw_array = $request->input('ids');
|
||||
|
||||
if ((is_array($models_raw_array)) && (count($models_raw_array) > 0)) {
|
||||
|
||||
@@ -133,12 +133,23 @@ class CustomFieldsController extends Controller
|
||||
|
||||
$this->authorize('update', $field);
|
||||
|
||||
if ($field->fieldset()->detach($fieldset_id)) {
|
||||
return redirect()->route('fieldsets.show', ['fieldset' => $fieldset_id])
|
||||
->with("success", trans('admin/custom_fields/message.field.delete.success'));
|
||||
// Check that the field exists - this is mostly related to the demo, where we
|
||||
// rewrite the data every x minutes, so it's possible someone might be disassociating
|
||||
// a field from a fieldset just as we're wiping the database
|
||||
if (($field) && ($fieldset_id)) {
|
||||
|
||||
if ($field->fieldset()->detach($fieldset_id)) {
|
||||
return redirect()->route('fieldsets.show', ['fieldset' => $fieldset_id])
|
||||
->with("success", trans('admin/custom_fields/message.field.delete.success'));
|
||||
} else {
|
||||
return redirect()->back()->withErrors(['message' => "Field is in use and cannot be deleted."]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return redirect()->back()->withErrors(['message' => "Field is in-use"]);
|
||||
return redirect()->back()->withErrors(['message' => "Error deleting field from fieldset"]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,20 +189,25 @@ class CustomFieldsController extends Controller
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
$field = CustomField::find($id);
|
||||
if ($field = CustomField::find($id)) {
|
||||
|
||||
$this->authorize('update', $field);
|
||||
$this->authorize('update', $field);
|
||||
|
||||
$customFormat = '';
|
||||
if((stripos($field->format, 'regex') === 0) && ($field->format !== CustomField::PREDEFINED_FORMATS['MAC'])) {
|
||||
$customFormat = $field->format;
|
||||
}
|
||||
$customFormat = '';
|
||||
if((stripos($field->format, 'regex') === 0) && ($field->format !== CustomField::PREDEFINED_FORMATS['MAC'])) {
|
||||
$customFormat = $field->format;
|
||||
}
|
||||
|
||||
return view("custom_fields.fields.edit",[
|
||||
'field' => $field,
|
||||
'customFormat' => $customFormat,
|
||||
'predefinedFormats' => Helper::predefined_formats()
|
||||
]);
|
||||
return view("custom_fields.fields.edit",[
|
||||
'field' => $field,
|
||||
'customFormat' => $customFormat,
|
||||
'predefinedFormats' => Helper::predefined_formats()
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->route("fields.index")
|
||||
->with("error", trans('admin/custom_fields/message.field.invalid'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,12 @@ use Redirect;
|
||||
class CustomFieldsetsController extends Controller
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
return redirect()->route("fields.index")
|
||||
->with("error", trans('admin/custom_fields/message.fieldset.does_not_exist'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates and stores a new custom field.
|
||||
*
|
||||
|
||||
@@ -6,15 +6,49 @@ use App\Helpers\Helper;
|
||||
|
||||
class ModalController extends Controller
|
||||
{
|
||||
function show($type, $itemId = null) {
|
||||
$view = view("modals.${type}");
|
||||
|
||||
if($type == "statuslabel") {
|
||||
$view->with('statuslabel_types', Helper::statusTypeList());
|
||||
/**
|
||||
* Load the modal views after confirming they are in the allowed_types array.
|
||||
* The allowed types away just prevents shithead skiddies from fuzzing the urls
|
||||
* with automated scripts and junking up the logs. - snipe
|
||||
*
|
||||
* @version v5.3.7-pre
|
||||
* @author [Brady Wetherington] [<uberbrady@gmail.com>]
|
||||
* @author [A. Gianotto] [<snipe@snipe.net]
|
||||
* @return View
|
||||
*/
|
||||
function show ($type, $itemId = null) {
|
||||
|
||||
// These values should correspond to a file in resources/views/modals/
|
||||
$allowed_types = [
|
||||
'category',
|
||||
'kit-model',
|
||||
'kit-license',
|
||||
'kit-consumable',
|
||||
'kit-accessory',
|
||||
'location',
|
||||
'manufacturer',
|
||||
'model',
|
||||
'statuslabel',
|
||||
'supplier',
|
||||
'upload-file',
|
||||
'user',
|
||||
];
|
||||
|
||||
|
||||
if (in_array($type, $allowed_types)) {
|
||||
$view = view("modals.${type}");
|
||||
|
||||
if ($type == "statuslabel") {
|
||||
$view->with('statuslabel_types', Helper::statusTypeList());
|
||||
}
|
||||
if (in_array($type, ['kit-model', 'kit-license', 'kit-consumable', 'kit-accessory'])) {
|
||||
$view->with('kitId', $itemId);
|
||||
}
|
||||
return $view;
|
||||
}
|
||||
if(in_array($type, ['kit-model', 'kit-license', 'kit-consumable', 'kit-accessory'])) {
|
||||
$view->with('kitId', $itemId);
|
||||
}
|
||||
return $view;
|
||||
|
||||
abort(404,'Page not found');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +113,12 @@ class ProfileController extends Controller
|
||||
* @return View
|
||||
*/
|
||||
public function api() {
|
||||
|
||||
// Make sure the self.api permission has been granted
|
||||
if (!Gate::allows('self.api')) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
return view('account/api');
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ use App\Http\Requests\ImageUploadRequest;
|
||||
use App\Http\Requests\SettingsSamlRequest;
|
||||
use App\Http\Requests\SetupUserRequest;
|
||||
use App\Models\Setting;
|
||||
use App\Models\Asset;
|
||||
use App\Models\User;
|
||||
use App\Notifications\FirstAdminNotification;
|
||||
use App\Notifications\MailTest;
|
||||
@@ -621,6 +622,26 @@ class SettingsController extends Controller
|
||||
return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error'));
|
||||
}
|
||||
|
||||
// Check if the audit interval has changed - if it has, we want to update ALL of the assets audit dates
|
||||
if ($request->input('audit_interval') != $setting->audit_interval) {
|
||||
|
||||
// Be careful - this could be a negative number
|
||||
$audit_diff_months = ((int)$request->input('audit_interval') - (int)($setting->audit_interval));
|
||||
|
||||
// Grab all of the assets that have an existing next_audit_date
|
||||
$assets = Asset::whereNotNull('next_audit_date')->get();
|
||||
|
||||
// Update all of the assets' next_audit_date values
|
||||
foreach ($assets as $asset) {
|
||||
|
||||
if ($asset->next_audit_date != '') {
|
||||
$old_next_audit = new \DateTime($asset->next_audit_date);
|
||||
$asset->next_audit_date = $old_next_audit->modify($audit_diff_months.' month')->format('Y-m-d');
|
||||
$asset->forceSave();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$alert_email = rtrim($request->input('alert_email'), ',');
|
||||
$alert_email = trim($alert_email);
|
||||
$admin_cc_email = rtrim($request->input('admin_cc_email'), ',');
|
||||
|
||||
@@ -184,6 +184,7 @@ class SuppliersController extends Controller
|
||||
*/
|
||||
public function show($supplierId = null)
|
||||
{
|
||||
$this->authorize('view', Supplier::class);
|
||||
$supplier = Supplier::find($supplierId);
|
||||
|
||||
if (isset($supplier->id)) {
|
||||
|
||||
@@ -484,7 +484,6 @@ class UsersController extends Controller
|
||||
$user->first_name = '';
|
||||
$user->last_name = '';
|
||||
$user->email = substr($user->email, ($pos = strpos($user->email, '@')) !== false ? $pos : 0);
|
||||
|
||||
$user->id = null;
|
||||
|
||||
// Get this user groups
|
||||
|
||||
@@ -24,6 +24,7 @@ class Kernel extends HttpKernel
|
||||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
|
||||
\App\Http\Middleware\SecurityHeaders::class,
|
||||
\App\Http\Middleware\PreventBackHistory::class,
|
||||
\Fruitcake\Cors\HandleCors::class,
|
||||
|
||||
];
|
||||
|
||||
@@ -44,8 +45,6 @@ class Kernel extends HttpKernel
|
||||
],
|
||||
|
||||
'api' => [
|
||||
\Barryvdh\Cors\HandleCors::class,
|
||||
'throttle:120,1',
|
||||
'auth:api',
|
||||
],
|
||||
];
|
||||
|
||||
@@ -32,7 +32,7 @@ class CheckForTwoFactor
|
||||
if ($settings = Setting::getSettings()) {
|
||||
if (Auth::check() && ($settings->two_factor_enabled != '')) {
|
||||
// This user is already 2fa-authed
|
||||
if ($request->session()->get('2fa_authed')) {
|
||||
if ($request->session()->get('2fa_authed')==Auth::user()->id) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,14 @@ abstract class Request extends FormRequest
|
||||
{
|
||||
protected $rules = [];
|
||||
|
||||
public function json($key = null, $default = null)
|
||||
{
|
||||
if ($this->ajax() || $this->wantsJson()) {
|
||||
json_decode($this->getContent(), false, 512, JSON_THROW_ON_ERROR); // ignore output, just throw
|
||||
}
|
||||
return parent::json($key, $default);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
return $this->rules;
|
||||
|
||||
@@ -36,7 +36,11 @@ class ActionlogsTransformer
|
||||
|
||||
if (is_array($meta_value)) {
|
||||
foreach ($meta_value as $meta_value_key => $meta_value_value) {
|
||||
$clean_meta[$key][$meta_value_key] = e($meta_value_value);
|
||||
if (is_scalar($meta_value_value)) {
|
||||
$clean_meta[$key][$meta_value_key] = e($meta_value_value);
|
||||
} else {
|
||||
$clean_meta[$key][$meta_value_key] = 'invalid scalar: '.print_r($meta_value_value, true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@ use Illuminate\Database\Eloquent\Collection;
|
||||
class GroupsTransformer
|
||||
{
|
||||
|
||||
public function transformGroups (Collection $groups)
|
||||
public function transformGroups (Collection $groups, $total = null)
|
||||
{
|
||||
$array = array();
|
||||
foreach ($groups as $group) {
|
||||
$array[] = self::transformGroup($group);
|
||||
}
|
||||
return (new DatatablesTransformer)->transformDatatables($array);
|
||||
return (new DatatablesTransformer)->transformDatatables($array, $total);
|
||||
}
|
||||
|
||||
public function transformGroup (Group $group)
|
||||
|
||||
@@ -45,7 +45,9 @@ class LicensesTransformer
|
||||
'category' => ($license->category) ? ['id' => (int) $license->category->id,'name'=> e($license->category->name)] : null,
|
||||
'created_at' => Helper::getFormattedDateObject($license->created_at, 'datetime'),
|
||||
'updated_at' => Helper::getFormattedDateObject($license->updated_at, 'datetime'),
|
||||
'deleted_at' => Helper::getFormattedDateObject($license->deleted_at, 'datetime'),
|
||||
'user_can_checkout' => (bool) ($license->free_seats_count > 0),
|
||||
|
||||
];
|
||||
|
||||
$permissions_array['available_actions'] = [
|
||||
|
||||
@@ -71,7 +71,7 @@ class AssetImporter extends ItemImporter
|
||||
$this->log("No Matching Asset, Creating a new one");
|
||||
$asset = new Asset;
|
||||
}
|
||||
|
||||
$this->item['notes'] = $this->findCsvMatch($row, 'asset_notes');
|
||||
$this->item['image'] = $this->findCsvMatch($row, "image");
|
||||
$this->item['requestable'] = $this->fetchHumanBoolean($this->findCsvMatch($row, "requestable"));;
|
||||
$asset->requestable = $this->fetchHumanBoolean($this->findCsvMatch($row, "requestable"));
|
||||
|
||||
@@ -177,7 +177,7 @@ class ItemImporter extends Importer
|
||||
*/
|
||||
public function createOrFetchAssetModel(array $row)
|
||||
{
|
||||
|
||||
$condition = array();
|
||||
$asset_model_name = $this->findCsvMatch($row, "asset_model");
|
||||
$asset_modelNumber = $this->findCsvMatch($row, "model_number");
|
||||
// TODO: At the moment, this means we can't update the model number if the model name stays the same.
|
||||
@@ -189,8 +189,16 @@ class ItemImporter extends Importer
|
||||
} elseif ((empty($asset_model_name)) && (empty($asset_modelNumber))) {
|
||||
$asset_model_name ='Unknown';
|
||||
}
|
||||
|
||||
if ((!empty($asset_model_name)) && (empty($asset_modelNumber))) {
|
||||
$condition[] = ['name', '=', $asset_model_name];
|
||||
} elseif ((!empty($asset_model_name)) && (!empty($asset_modelNumber))) {
|
||||
$condition[] = ['name', '=', $asset_model_name];
|
||||
$condition[] = ['model_number', '=', $asset_modelNumber];
|
||||
}
|
||||
|
||||
$editingModel = $this->updating;
|
||||
$asset_model = AssetModel::where(['name' => $asset_model_name, 'model_number' => $asset_modelNumber])->first();
|
||||
$asset_model = AssetModel::where($condition)->first();
|
||||
|
||||
if ($asset_model) {
|
||||
if (!$this->updating) {
|
||||
@@ -200,7 +208,12 @@ class ItemImporter extends Importer
|
||||
$this->log("Matching Model found, updating it.");
|
||||
$item = $this->sanitizeItemForStoring($asset_model, $editingModel);
|
||||
$item['name'] = $asset_model_name;
|
||||
$item['model_number'] = $asset_modelNumber;
|
||||
$item['notes'] = $this->findCsvMatch($row, 'model_notes');
|
||||
|
||||
if(!empty($asset_modelNumber)){
|
||||
$item['model_number'] = $asset_modelNumber;
|
||||
}
|
||||
|
||||
$asset_model->update($item);
|
||||
$asset_model->save();
|
||||
$this->log("Asset Model Updated");
|
||||
@@ -212,6 +225,7 @@ class ItemImporter extends Importer
|
||||
$item = $this->sanitizeItemForStoring($asset_model, $editingModel);
|
||||
$item['name'] = $asset_model_name;
|
||||
$item['model_number'] = $asset_modelNumber;
|
||||
$item['notes'] = $this->findCsvMatch($row, 'model_notes');
|
||||
|
||||
$asset_model->fill($item);
|
||||
$item = null;
|
||||
|
||||
@@ -32,7 +32,6 @@ class LicenseImporter extends ItemImporter
|
||||
{
|
||||
$editingLicense = false;
|
||||
$license = License::where('name', $this->item['name'])
|
||||
->where('serial', $this->item['serial'])
|
||||
->first();
|
||||
if ($license) {
|
||||
if (!$this->updating) {
|
||||
|
||||
@@ -52,6 +52,7 @@ class UserImporter extends ItemImporter
|
||||
$this->item['city'] = $this->findCsvMatch($row, 'city');
|
||||
$this->item['state'] = $this->findCsvMatch($row, 'state');
|
||||
$this->item['country'] = $this->findCsvMatch($row, 'country');
|
||||
$this->item['zip'] = $this->findCsvMatch($row, 'zip');
|
||||
$this->item['activated'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'activated')) == 1) ? '1' : 0;
|
||||
$this->item['employee_num'] = $this->findCsvMatch($row, 'employee_num');
|
||||
$this->item['department_id'] = $this->createOrFetchDepartment($this->findCsvMatch($row, 'department'));
|
||||
|
||||
@@ -665,13 +665,15 @@ class Asset extends Depreciable
|
||||
*/
|
||||
public static function getExpiringWarrantee($days = 30)
|
||||
{
|
||||
$days = (is_null($days)) ? 30 : $days;
|
||||
|
||||
return Asset::where('archived', '=', '0')
|
||||
->whereNotNull('warranty_months')
|
||||
->whereNotNull('purchase_date')
|
||||
->whereNull('deleted_at')
|
||||
->whereRaw(\DB::raw('DATE_ADD(`purchase_date`,INTERVAL `warranty_months` MONTH) <= DATE(NOW() + INTERVAL '
|
||||
. $days
|
||||
. ' DAY) AND DATE_ADD(`purchase_date`,INTERVAL `warranty_months` MONTH) > NOW()'))
|
||||
. ' DAY) AND DATE_ADD(`purchase_date`, INTERVAL `warranty_months` MONTH) > NOW()'))
|
||||
->orderBy('purchase_date', 'ASC')
|
||||
->get();
|
||||
}
|
||||
@@ -814,7 +816,9 @@ class Asset extends Depreciable
|
||||
*/
|
||||
public function checkin_email()
|
||||
{
|
||||
return $this->model->category->checkin_email;
|
||||
if (($this->model) && ($this->model->category)) {
|
||||
return $this->model->category->checkin_email;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -627,6 +627,7 @@ class License extends Depreciable
|
||||
*/
|
||||
public static function getExpiringLicenses($days = 60)
|
||||
{
|
||||
$days = (is_null($days)) ? 60 : $days;
|
||||
|
||||
return License::whereNotNull('expiration_date')
|
||||
->whereNull('deleted_at')
|
||||
|
||||
@@ -115,6 +115,7 @@ trait Loggable
|
||||
|
||||
$log->location_id = null;
|
||||
$log->note = $note;
|
||||
$log->action_date = $action_date;
|
||||
|
||||
if (Auth::user()) {
|
||||
$log->user_id = Auth::user()->id;
|
||||
|
||||
@@ -14,8 +14,8 @@ class Supplier extends SnipeModel
|
||||
|
||||
protected $rules = array(
|
||||
'name' => 'required|min:1|max:255|unique_undeleted',
|
||||
'address' => 'max:50|nullable',
|
||||
'address2' => 'max:50|nullable',
|
||||
'address' => 'max:250|nullable',
|
||||
'address2' => 'max:250|nullable',
|
||||
'city' => 'max:255|nullable',
|
||||
'state' => 'max:32|nullable',
|
||||
'country' => 'max:3|nullable',
|
||||
|
||||
@@ -43,6 +43,17 @@ class AppServiceProvider extends ServiceProvider
|
||||
\Log::warning("'APP_FORCE_TLS' is set to true, but 'APP_URL' does not start with 'https://'. Will not force TLS on connections.");
|
||||
}
|
||||
}
|
||||
|
||||
// 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'));
|
||||
} 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.");
|
||||
}
|
||||
}
|
||||
|
||||
Schema::defaultStringLength(191);
|
||||
Asset::observe(AssetObserver::class);
|
||||
Accessory::observe(AccessoryObserver::class);
|
||||
|
||||
@@ -156,6 +156,8 @@ class AuthServiceProvider extends ServiceProvider
|
||||
return $user->hasAccess('self.checkout_assets');
|
||||
});
|
||||
|
||||
// This is largely used to determine whether to display the gear icon sidenav
|
||||
// in the left-side navigation
|
||||
Gate::define('backend.interact', function ($user) {
|
||||
return $user->can('view', Statuslabel::class)
|
||||
|| $user->can('view', AssetModel::class)
|
||||
@@ -168,7 +170,21 @@ class AuthServiceProvider extends ServiceProvider
|
||||
|| $user->can('view', Manufacturer::class)
|
||||
|| $user->can('view', CustomField::class)
|
||||
|| $user->can('view', CustomFieldset::class)
|
||||
|| $user->can('view', Depreciation::class);
|
||||
|| $user->can('view', Depreciation::class);
|
||||
});
|
||||
|
||||
|
||||
// This determines whether or not an API user should be able to get the selectlists.
|
||||
// This can seem a little confusing, since view properties may not have been granted
|
||||
// to the logged in API user, but creating assets, licenses, etc won't work
|
||||
// if the user can't view and interact with the select lists.
|
||||
Gate::define('view.selectlists', function ($user) {
|
||||
return $user->can(['create','update'], Asset::class)
|
||||
|| $user->can(['create','update'], License::class)
|
||||
|| $user->can(['create','update'], Component::class)
|
||||
|| $user->can(['create','update'], Consumable::class)
|
||||
|| $user->can(['create','update'], Accessory::class)
|
||||
|| $user->can(['create','update'], User::class);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ class LdapAd extends LdapAdConfiguration
|
||||
'262688', // 0x40220 NORMAL_ACCOUNT, PASSWD_NOTREQD, SMARTCARD_REQUIRED
|
||||
'328192', // 0x50200 NORMAL_ACCOUNT, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD
|
||||
'328224', // 0x50220 NORMAL_ACCOUNT, PASSWD_NOT_REQD, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD
|
||||
'4194816',// 0x400200 NORMAL_ACCOUNT, DONT_REQ_PREAUTH
|
||||
'4260352',// 0x410200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD, DONT_REQ_PREAUTH
|
||||
'1049088',// 0x100200 NORMAL_ACCOUNT, NOT_DELEGATED
|
||||
'1114624',// 0x110200 NORMAL_ACCOUNT, NOT_DELEGATED, DONT_EXPIRE_PASSWORD
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
"adldap2/adldap2": "^10.2",
|
||||
"alek13/slack": "^1.12",
|
||||
"bacon/bacon-qr-code": "^1.0",
|
||||
"barryvdh/laravel-cors": "^0.11.3",
|
||||
"barryvdh/laravel-debugbar": "^3.2",
|
||||
"doctrine/cache": "^1.10",
|
||||
"doctrine/common": "^2.12",
|
||||
@@ -31,6 +30,7 @@
|
||||
"enshrined/svg-sanitize": "^0.13.3",
|
||||
"erusev/parsedown": "^1.7",
|
||||
"fideloper/proxy": "^4.3",
|
||||
"fruitcake/laravel-cors": "^2.2",
|
||||
"guzzlehttp/guzzle": "^6.5",
|
||||
"intervention/image": "^2.5",
|
||||
"javiereguiluz/easyslugger": "^1.0",
|
||||
|
||||
175
composer.lock
generated
175
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "252b4b452ca73e3e8f3d8543fce394d2",
|
||||
"content-hash": "6bd73d729675b968cf296bdf68f6a523",
|
||||
"packages": [
|
||||
{
|
||||
"name": "adldap2/adldap2",
|
||||
@@ -139,36 +139,36 @@
|
||||
},
|
||||
{
|
||||
"name": "asm89/stack-cors",
|
||||
"version": "1.3.0",
|
||||
"version": "v2.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/asm89/stack-cors.git",
|
||||
"reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08"
|
||||
"reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08",
|
||||
"reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08",
|
||||
"url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a",
|
||||
"reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.5.9",
|
||||
"symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0",
|
||||
"symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0"
|
||||
"php": "^7.2|^8.0",
|
||||
"symfony/http-foundation": "^4|^5|^6",
|
||||
"symfony/http-kernel": "^4|^5|^6"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.0 || ^4.8.10",
|
||||
"squizlabs/php_codesniffer": "^2.3"
|
||||
"phpunit/phpunit": "^7|^9",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2-dev"
|
||||
"dev-master": "2.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Asm89\\Stack\\": "src/Asm89/Stack/"
|
||||
"Asm89\\Stack\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@@ -189,9 +189,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/asm89/stack-cors/issues",
|
||||
"source": "https://github.com/asm89/stack-cors/tree/1.3.0"
|
||||
"source": "https://github.com/asm89/stack-cors/tree/v2.1.1"
|
||||
},
|
||||
"time": "2019-12-24T22:41:47+00:00"
|
||||
"time": "2022-01-18T09:12:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
@@ -333,72 +333,6 @@
|
||||
},
|
||||
"time": "2017-10-17T09:59:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-cors",
|
||||
"version": "v0.11.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fruitcake/laravel-cors.git",
|
||||
"reference": "03492f1a3bc74a05de23f93b94ac7cc5c173eec9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/03492f1a3bc74a05de23f93b94ac7cc5c173eec9",
|
||||
"reference": "03492f1a3bc74a05de23f93b94ac7cc5c173eec9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"asm89/stack-cors": "^1.2",
|
||||
"illuminate/support": "^5.5|^6",
|
||||
"php": ">=7",
|
||||
"symfony/http-foundation": "^3.1|^4",
|
||||
"symfony/http-kernel": "^3.1|^4"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/framework": "^5.5",
|
||||
"orchestra/testbench": "3.3.x|3.4.x|3.5.x|3.6.x|3.7.x",
|
||||
"phpunit/phpunit": "^4.8|^5.2|^7.0",
|
||||
"squizlabs/php_codesniffer": "^2.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.11-dev"
|
||||
},
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Barryvdh\\Cors\\ServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Barryvdh\\Cors\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application",
|
||||
"keywords": [
|
||||
"api",
|
||||
"cors",
|
||||
"crossdomain",
|
||||
"laravel"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fruitcake/laravel-cors/issues",
|
||||
"source": "https://github.com/fruitcake/laravel-cors/tree/v0.11.4"
|
||||
},
|
||||
"time": "2019-08-28T11:27:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-debugbar",
|
||||
"version": "v3.6.2",
|
||||
@@ -2042,6 +1976,85 @@
|
||||
},
|
||||
"time": "2021-06-23T19:00:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fruitcake/laravel-cors",
|
||||
"version": "v2.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fruitcake/laravel-cors.git",
|
||||
"reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534",
|
||||
"reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"asm89/stack-cors": "^2.0.1",
|
||||
"illuminate/contracts": "^6|^7|^8|^9",
|
||||
"illuminate/support": "^6|^7|^8|^9",
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/framework": "^6|^7.24|^8",
|
||||
"orchestra/testbench-dusk": "^4|^5|^6|^7",
|
||||
"phpunit/phpunit": "^6|^7|^8|^9",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.1-dev"
|
||||
},
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Fruitcake\\Cors\\CorsServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Fruitcake\\Cors\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fruitcake",
|
||||
"homepage": "https://fruitcake.nl"
|
||||
},
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application",
|
||||
"keywords": [
|
||||
"api",
|
||||
"cors",
|
||||
"crossdomain",
|
||||
"laravel"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fruitcake/laravel-cors/issues",
|
||||
"source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://fruitcake.nl",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/barryvdh",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2022-02-23T14:25:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "6.5.5",
|
||||
@@ -11625,5 +11638,5 @@
|
||||
"platform-overrides": {
|
||||
"php": "7.2.5"
|
||||
},
|
||||
"plugin-api-version": "2.0.0"
|
||||
"plugin-api-version": "2.1.0"
|
||||
}
|
||||
|
||||
@@ -255,7 +255,20 @@ return [
|
||||
'enable_csp' => env('ENABLE_CSP', false),
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Require SAML Login
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Disable the ability to login via form login, and disables the 'nosaml'
|
||||
| workaround. It requires all logins to process via SAML login.
|
||||
| (This is for high security setups. If your SAML configuration is not
|
||||
| working, this option should be set to false. This option is not needed
|
||||
| to successfully configure SAML authentication.)
|
||||
|
|
||||
*/
|
||||
|
||||
'require_saml' => env('REQUIRE_SAML', false),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -412,4 +425,15 @@ return [
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| API Throttling
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value determines the number of API requests permitted per minute
|
||||
|
|
||||
*/
|
||||
|
||||
'api_throttle_per_minute' => env('API_THROTTLE_PER_MINUTE', 120),
|
||||
|
||||
];
|
||||
|
||||
@@ -37,12 +37,13 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'supportsCredentials' => false,
|
||||
'allowedOrigins' => $allowed_origins,
|
||||
'allowedOriginsPatterns' => [],
|
||||
'allowedHeaders' => ['*'],
|
||||
'allowedMethods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
|
||||
'exposedHeaders' => [],
|
||||
'maxAge' => 0,
|
||||
'supports_credentials' => false,
|
||||
'allowed_origins' => $allowed_origins,
|
||||
'allowed_origins_patterns' => [],
|
||||
'allowed_headers' => ['*'],
|
||||
'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
|
||||
'exposed_headers' => [],
|
||||
'max_age' => 0,
|
||||
'paths' => ['api/*', 'sanctum/csrf-cookie'],
|
||||
|
||||
];
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v5.3.6',
|
||||
'full_app_version' => 'v5.3.6 - build 6567-g9b2dd6522',
|
||||
'build_version' => '6567',
|
||||
'app_version' => 'v5.4.0',
|
||||
'full_app_version' => 'v5.4.0 - build 6685-dfbff274839',
|
||||
'build_version' => '6685',
|
||||
'prerelease_version' => '',
|
||||
'hash_version' => 'g9b2dd6522',
|
||||
'full_hash' => 'v5.3.6-8-g9b2dd6522',
|
||||
'hash_version' => 'dfbff274839',
|
||||
'full_hash' => 'v5.4.0-1-dfbff274839',
|
||||
'branch' => 'master',
|
||||
);
|
||||
);
|
||||
|
||||
@@ -22,12 +22,12 @@ class UpdateGroupFieldForReporting extends Migration {
|
||||
|
||||
if (Schema::hasTable('permission_groups')) {
|
||||
|
||||
Group::where('id', 1)->update(['permissions' => '{"users-poop":1,"reports":1}']);
|
||||
Group::where('id', 2)->update(['permissions' => '{"users-pop":1,"reports":1}']);
|
||||
Group::where('id', 1)->update(['permissions' => '{"users-foo":1,"reports":1}']);
|
||||
Group::where('id', 2)->update(['permissions' => '{"users-foo":1,"reports":1}']);
|
||||
|
||||
} elseif (Schema::hasTable('groups')) {
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"admin-farts":1,"users":1,"reports":1}', 1]);
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"users-farts":1,"reports":1}', 2]);
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"admin-foo":1,"users":1,"reports":1}', 1]);
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"users-foo":1,"reports":1}', 2]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class AddLdapFieldsToSettings extends Migration {
|
||||
$table->string('ldap_username_field')->nullable()->default('samaccountname');
|
||||
$table->string('ldap_lname_field')->nullable()->default('sn');
|
||||
$table->string('ldap_fname_field')->nullable()->default('givenname');
|
||||
$table->string('ldap_auth_filter_query')->nullable()->default('uid=samaccountname');
|
||||
$table->string('ldap_auth_filter_query')->nullable()->default('uid=');
|
||||
$table->integer('ldap_version')->nullable()->default(3);
|
||||
$table->string('ldap_active_flag')->nullable()->default(NULL);
|
||||
$table->string('ldap_emp_num')->nullable()->default(NULL);
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class ChangeSupplierAddressLength extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('suppliers', function (Blueprint $table) {
|
||||
//
|
||||
$table->string('address', 250)->nullable()->change();
|
||||
$table->string('address2', 250)->nullable()->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('suppliers', function (Blueprint $table) {
|
||||
//
|
||||
$table->text('address', 50)->nullable()->default(null)->change();
|
||||
$table->text('address2', 50)->nullable()->default(null)->change();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use App\Models\Setting;
|
||||
|
||||
class BlankOutLdapActiveFlag extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
if ($s = Setting::getSettings()) {
|
||||
$s->ldap_active_flag = '';
|
||||
$s->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
2
docker/column-statistics.cnf
Normal file
2
docker/column-statistics.cnf
Normal file
@@ -0,0 +1,2 @@
|
||||
[mysqldump]
|
||||
column-statistics=0
|
||||
18
package-lock.json
generated
18
package-lock.json
generated
@@ -4233,7 +4233,7 @@
|
||||
"deep-equal": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
|
||||
"integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
|
||||
"integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-arguments": "^1.0.4",
|
||||
@@ -11630,8 +11630,7 @@
|
||||
"picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||
"optional": true
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
|
||||
},
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
@@ -14237,7 +14236,6 @@
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
|
||||
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
@@ -14251,8 +14249,7 @@
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"optional": true
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.4.0",
|
||||
@@ -16241,9 +16238,9 @@
|
||||
"integrity": "sha1-G+i3twTdOFcVJwiu+x1KSzpp+zM="
|
||||
},
|
||||
"jquery-ui": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.0.tgz",
|
||||
"integrity": "sha512-Osf7ECXNTYHtKBkn9xzbIf9kifNrBhfywFEKxOeB/OVctVmLlouV9mfc2qXCp6uyO4Pn72PXKOnj09qXetopCw==",
|
||||
"version": "1.13.1",
|
||||
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.1.tgz",
|
||||
"integrity": "sha512-2VlU59N5P4HaumDK1Z3XEVjSvegFbEOQRgpHUBaB2Ak98Axl3hFhJ6RFcNQNuk9SfL6WxIbuLst8dW/U56NSiA==",
|
||||
"requires": {
|
||||
"jquery": ">=1.8.0 <4.0.0"
|
||||
}
|
||||
@@ -18337,8 +18334,7 @@
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
"imagemin": "^5.3.1",
|
||||
"jquery-form-validator": "^2.3.79",
|
||||
"jquery-slimscroll": "^1.3.8",
|
||||
"jquery-ui": "^1.13.0",
|
||||
"jquery-ui": "^1.13.1",
|
||||
"jquery-ui-bundle": "^1.12.1",
|
||||
"jquery.iframe-transport": "^1.0.0",
|
||||
"less": "^3.13.1",
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/css/dist/all.css
vendored
2
public/css/dist/all.css
vendored
File diff suppressed because one or more lines are too long
2
public/css/dist/bootstrap-table.css
vendored
2
public/css/dist/bootstrap-table.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -36,7 +36,7 @@
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery UI Widget 1.13.0
|
||||
* jQuery UI Widget 1.13.1
|
||||
* http://jqueryui.com
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
|
||||
2
public/js/dist/all.js
vendored
2
public/js/dist/all.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/dist/bootstrap-table.js
vendored
2
public/js/dist/bootstrap-table.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"/js/build/app.js": "/js/build/app.js?id=fa8e6e2c8e6ebd812d15",
|
||||
"/js/build/app.js": "/js/build/app.js?id=7f0aa35a0e80a6a64427",
|
||||
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=89f2b7816c4e00784b59",
|
||||
"/css/build/app.css": "/css/build/app.css?id=5d0d4ed9f5ea4d02b6fe",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=1a11d122b620ebdc8354",
|
||||
"/css/build/app.css": "/css/build/app.css?id=423186da9bf73779ce2a",
|
||||
"/css/build/overrides.css": "/css/build/overrides.css?id=e0c3caf0357a7ab0a2e9",
|
||||
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=2da78d31ca46509e2927",
|
||||
"/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=0845c3960331dcd5db3c",
|
||||
"/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=83a9d7106a863eb4536d",
|
||||
@@ -18,15 +18,15 @@
|
||||
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=0409748eb4bb77fe171a",
|
||||
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=7abb3dcd41ad0d4700b7",
|
||||
"/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=96477616f4a4b4ff1db8",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=d428302ff341ffec8b1b",
|
||||
"/css/dist/all.css": "/css/dist/all.css?id=23d12dde43fa52cbc84d",
|
||||
"/css/blue.png": "/css/blue.png?id=e83a6c29e04fe851f212",
|
||||
"/css/blue@2x.png": "/css/blue@2x.png?id=51135dd4d24f88f5de0b",
|
||||
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced",
|
||||
"/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced",
|
||||
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=93c24b4c89490bbfd73e",
|
||||
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=810d7e520c3057ee500e",
|
||||
"/js/build/vendor.js": "/js/build/vendor.js?id=b93877b4a88a76e1b18b",
|
||||
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=75760107ce879b26f156",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=5999105216485cd776ad",
|
||||
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=473d249fc27f1b907d07",
|
||||
"/js/dist/all.js": "/js/dist/all.js?id=1b9488168279292af5c4",
|
||||
"/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=1f137fd2dcbac676d291",
|
||||
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=af88a4cc8e58dc298963",
|
||||
"/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=5ef650950378aeb72dfa",
|
||||
|
||||
@@ -46,6 +46,14 @@
|
||||
<input v-if="field.type == 'text'" class="form-control m-b-xs" type="text" :value="getValue(field)" :id="'default-value' + field.id" :name="'default_values[' + field.id + ']'">
|
||||
<textarea v-if="field.type == 'textarea'" class="form-control" :value="getValue(field)" :id="'default-value' + field.id" :name="'default_values[' + field.id + ']'"></textarea><br>
|
||||
|
||||
<div v-if="field.type == 'checkbox'" v-for="field_value in field.field_values_array">
|
||||
<input v-if="field.type == 'checkbox'" class="" type="checkbox" :name="'default_values[' + field.id + '][]'" :value="field_value" :checked="getValue(field).split(', ').includes(field_value)"> <label>{{ field_value }}</label>
|
||||
</div>
|
||||
|
||||
<div v-if="field.type == 'radio'" v-for="field_value in field.field_values_array">
|
||||
<input v-if="field.type == 'radio'" class="" type="radio" :name="'default_values[' + field.id + ']'" :value="field_value" :checked="getValue(field).split(', ').includes(field_value)"> <label>{{ field_value }}</label>
|
||||
</div>
|
||||
|
||||
<select v-if="field.type == 'listbox'" class="form-control m-b-xs" :name="'default_values[' + field.id + ']'">
|
||||
<option value=""></option>
|
||||
<option v-for="field_value in field.field_values_array" :value="field_value" :selected="getValue(field) == field_value">{{ field_value }}</option>
|
||||
|
||||
@@ -130,7 +130,6 @@
|
||||
{id: 'location', text: 'Location' },
|
||||
{id: 'maintained', text: 'Maintained' },
|
||||
{id: 'manufacturer', text: 'Manufacturer' },
|
||||
{id: 'notes', text: 'Notes' },
|
||||
{id: 'order_number', text: 'Order Number' },
|
||||
{id: 'purchase_cost', text: 'Purchase Cost' },
|
||||
{id: 'purchase_date', text: 'Purchase Date' },
|
||||
@@ -143,10 +142,13 @@
|
||||
],
|
||||
accessories:[
|
||||
{id: 'model_number', text: 'Model Number'},
|
||||
{id: 'notes', text: 'Notes' },
|
||||
],
|
||||
assets: [
|
||||
{id: 'asset_tag', text: 'Asset Tag' },
|
||||
{id: 'asset_model', text: 'Model Name' },
|
||||
{id: 'asset_notes', text: 'Asset Notes' },
|
||||
{id: 'model_notes', text: 'Model Notes' },
|
||||
{id: 'checkout_class', text: 'Checkout Type' },
|
||||
{id: 'checkout_location', text: 'Checkout Location' },
|
||||
{id: 'image', text: 'Image Filename' },
|
||||
@@ -159,6 +161,7 @@
|
||||
{id: 'item_no', text: "Item Number"},
|
||||
{id: 'model_number', text: "Model Number"},
|
||||
{id: 'min_amt', text: "Minimum Quantity"},
|
||||
{id: 'notes', text: 'Notes' },
|
||||
],
|
||||
licenses: [
|
||||
{id: 'asset_tag', text: 'Assigned To Asset'},
|
||||
@@ -166,6 +169,7 @@
|
||||
{id: 'full_name', text: 'Full Name' },
|
||||
{id: 'license_email', text: 'Licensed To Email' },
|
||||
{id: 'license_name', text: 'Licensed To Name' },
|
||||
{id: 'notes', text: 'Notes' },
|
||||
{id: 'purchase_order', text: 'Purchase Order' },
|
||||
{id: 'reassignable', text: 'Reassignable' },
|
||||
{id: 'seats', text: 'Seats' },
|
||||
@@ -178,11 +182,12 @@
|
||||
{id: 'phone_number', text: 'Phone Number' },
|
||||
{id: 'manager_first_name', text: 'Manager First Name' },
|
||||
{id: 'manager_last_name', text: 'Manager Last Name' },
|
||||
{id: 'department', text: 'Department' },
|
||||
{id: 'notes', text: 'Notes' },
|
||||
{id: 'activated', text: 'Activated' },
|
||||
{id: 'address', text: 'Address' },
|
||||
{id: 'city', text: 'City' },
|
||||
{id: 'state', text: 'State' },
|
||||
{id: 'zip', text: 'ZIP' },
|
||||
{id: 'country', text: 'Country' },
|
||||
|
||||
],
|
||||
|
||||
@@ -466,7 +466,16 @@ h4 {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.card-view-title {
|
||||
min-width: 40% !important;
|
||||
line-height: 3.0!important;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.card-view {
|
||||
display: table-row;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,17 +5,17 @@
|
||||
'delete' => [
|
||||
'confirm' => 'Is jy seker jy wil hierdie bate instandhouding uitvee?',
|
||||
'error' => 'Daar was \'n probleem met die verwydering van die bate-instandhouding. Probeer asseblief weer.',
|
||||
'success' => 'Die bate-instandhouding is suksesvol verwyder.'
|
||||
'success' => 'Die bate-instandhouding is suksesvol verwyder.',
|
||||
],
|
||||
'create' => [
|
||||
'error' => 'Asset Maintenance is nie geskep nie, probeer asseblief weer.',
|
||||
'success' => 'Bate Onderhoud geskep suksesvol.'
|
||||
'success' => 'Bate Onderhoud geskep suksesvol.',
|
||||
],
|
||||
'edit' => [
|
||||
'error' => 'Bateonderhoud is nie geredigeer nie, probeer asseblief weer.',
|
||||
'success' => 'Bate Onderhoud suksesvol geredigeer.'
|
||||
'success' => 'Bate Onderhoud suksesvol geredigeer.',
|
||||
],
|
||||
'asset_maintenance_incomplete' => 'Nog nie voltooi nie',
|
||||
'warranty' => 'waarborg',
|
||||
'not_warranty' => 'Nie waarborg nie',
|
||||
];
|
||||
];
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
'title' => 'Bate Onderhoud',
|
||||
'asset_name' => 'Bate Naam',
|
||||
'is_warranty' => 'waarborg',
|
||||
'dl_csv' => 'Laai CSV af'
|
||||
'dl_csv' => 'Laai CSV af',
|
||||
];
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'select_company' => 'Kies Maatskappy',
|
||||
'about_companies' => 'About Companies',
|
||||
'about_companies_description' => ' You can use companies as a simple informative field, or you can use them to restrict asset visibility and availability to users with a specific company by enabling Full Company Support in your Admin Settings.',
|
||||
];
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
<?php
|
||||
return array(
|
||||
|
||||
return [
|
||||
'does_not_exist' => 'Maatskappy bestaan nie.',
|
||||
'assoc_users' => 'Hierdie maatskappy is tans geassosieer met ten minste een model en kan nie verwyder word nie. Dateer asseblief jou modelle op om nie meer hierdie maatskappy te verwys nie en probeer weer.',
|
||||
'create' => array(
|
||||
'create' => [
|
||||
'error' => 'Maatskappy is nie geskep nie, probeer asseblief weer.',
|
||||
'success' => 'Maatskappy geskep suksesvol.'
|
||||
),
|
||||
'update' => array(
|
||||
'success' => 'Maatskappy geskep suksesvol.',
|
||||
],
|
||||
'update' => [
|
||||
'error' => 'Maatskappy is nie opgedateer nie, probeer asseblief weer',
|
||||
'success' => 'Maatskappy suksesvol opgedateer.'
|
||||
),
|
||||
'delete' => array(
|
||||
'success' => 'Maatskappy suksesvol opgedateer.',
|
||||
],
|
||||
'delete' => [
|
||||
'confirm' => 'Is jy seker jy wil hierdie maatskappy uitvee?',
|
||||
'error' => 'Daar was \'n probleem met die verwydering van die maatskappy. Probeer asseblief weer.',
|
||||
'success' => 'Die maatskappy is suksesvol verwyder.'
|
||||
)
|
||||
);
|
||||
'success' => 'Die maatskappy is suksesvol verwyder.',
|
||||
],
|
||||
];
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'custom_fields' => 'Aangepaste velde',
|
||||
'manage' => 'Manage',
|
||||
'field' => 'veld',
|
||||
'about_fieldsets_title' => 'Oor Fieldsets',
|
||||
'about_fieldsets_text' => 'Veldstelle stel jou in staat om groepe van persoonlike velde te skep wat gereeld hergebruik word vir spesifieke tipe bates.',
|
||||
'custom_format' => 'Gepasmaakte formaat ...',
|
||||
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
|
||||
'custom_format' => 'Custom Regex format...',
|
||||
'encrypt_field' => 'Enkripteer die waarde van hierdie veld in die databasis',
|
||||
'encrypt_field_help' => 'WAARSKUWING: Om \'n veld te enkripteer, maak dit onondersoekbaar.',
|
||||
'encrypted' => 'encrypted',
|
||||
@@ -26,7 +27,19 @@ return array(
|
||||
'used_by_models' => 'Gebruik deur modelle',
|
||||
'order' => 'Orde',
|
||||
'create_fieldset' => 'Nuwe Fieldset',
|
||||
'create_fieldset_title' => 'Create a new fieldset',
|
||||
'create_field' => 'Nuwe aangepaste veld',
|
||||
'create_field_title' => 'Create a new custom field',
|
||||
'value_encrypted' => 'Die waarde van hierdie veld is geïnkripteer in die databasis. Slegs admingebruikers sal die gedecodeerde waarde kan sien',
|
||||
'show_in_email' => 'Include the value of this field in checkout emails sent to the user? Encrypted fields cannot be included in emails.',
|
||||
);
|
||||
'help_text' => 'Help Text',
|
||||
'help_text_description' => 'This is optional text that will appear below the form elements while editing an asset to provide context on the field.',
|
||||
'about_custom_fields_title' => 'About Custom Fields',
|
||||
'about_custom_fields_text' => 'Custom fields allow you to add arbitrary attributes to assets.',
|
||||
'add_field_to_fieldset' => 'Add Field to Fieldset',
|
||||
'make_optional' => 'Required - click to make optional',
|
||||
'make_required' => 'Optional - click to make required',
|
||||
'reorder' => 'Reorder',
|
||||
'db_field' => 'DB Field',
|
||||
'db_convert_warning' => 'WARNING. This field is in the custom fields table as <code> :db_column </code> but should be :expected </code>.'
|
||||
];
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'about_asset_depreciations' => 'Oor bate afskrywing',
|
||||
'about_depreciations' => 'U kan bate-afskrywings opstel om bates te deprecieer gebaseer op reguit-waardevermindering.',
|
||||
'asset_depreciations' => 'Bate afskrywing',
|
||||
'create' => 'Skep waardevermindering',
|
||||
'depreciation_name' => 'Waardevermindering Naam',
|
||||
'depreciation_min' => 'Floor Value of Depreciation',
|
||||
'number_of_months' => 'Aantal maande',
|
||||
'update' => 'Werk waardevermindering op',
|
||||
'depreciation_min' => 'Minimum Value after Depreciation'
|
||||
|
||||
);
|
||||
'depreciation_min' => 'Minimum Value after Depreciation',
|
||||
'no_depreciations_warning' => '<strong>Warning: </strong>
|
||||
You do not currently have any depreciations set up.
|
||||
Please set up at least one depreciation to view the depreciation report.',
|
||||
];
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
'id' => 'ID',
|
||||
'months' => 'maande',
|
||||
'term' => 'termyn',
|
||||
'title' => 'naam',
|
||||
'depreciation_min' => 'Floor Value',
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'about_groups_title' => 'Oor groepe',
|
||||
'about_groups' => 'Groepe word gebruik om gebruikersregte te veralgemeen.',
|
||||
'group_management' => 'Groepbestuur',
|
||||
@@ -10,5 +10,7 @@ return array(
|
||||
'group_admin' => 'Groep Admin',
|
||||
'allow' => 'laat',
|
||||
'deny' => 'ontken',
|
||||
|
||||
);
|
||||
'permission' => 'Permission',
|
||||
'grant' => 'Grant',
|
||||
'no_permissions' => 'This group has no permissions.'
|
||||
];
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'bulk_delete' => 'Bevestig bates vir die verwydering van grootmaat',
|
||||
return [
|
||||
'bulk_delete' => 'Bevestig bates vir die verwydering van grootmaat',
|
||||
'bulk_delete_help' => 'Hersien die bates vir grootmaatverwydering hieronder. Sodra dit verwyder is, kan hierdie bates herstel word, maar hulle word nie meer geassosieer met enige gebruikers wat hulle tans toegewys is nie.',
|
||||
'bulk_delete_warn' => 'Jy is op die punt om te verwyder: bate_count bates.',
|
||||
'bulk_update' => 'Grootskaalse opdateringsbates',
|
||||
'bulk_update_help' => 'Met hierdie vorm kan u verskeie bates gelyktydig bywerk. Vul slegs die velde in wat u moet verander. Enige velde wat leeg is, bly onveranderd.',
|
||||
'bulk_update_warn' => 'Jy is op die punt om die eienskappe van: bate_count bates te wysig.',
|
||||
'bulk_update' => 'Grootskaalse opdateringsbates',
|
||||
'bulk_update_help' => 'Met hierdie vorm kan u verskeie bates gelyktydig bywerk. Vul slegs die velde in wat u moet verander. Enige velde wat leeg is, bly onveranderd.',
|
||||
'bulk_update_warn' => 'Jy is op die punt om die eienskappe van: bate_count bates te wysig.',
|
||||
'checkedout_to' => 'Gekontroleer na',
|
||||
'checkout_date' => 'Checkout Datum',
|
||||
'checkin_date' => 'Incheckdatum',
|
||||
@@ -38,7 +38,12 @@ return array(
|
||||
'tag' => 'Bate-tag',
|
||||
'update' => 'Asset Update',
|
||||
'warranty' => 'waarborg',
|
||||
'warranty_expires' => 'Warranty Expires',
|
||||
'warranty_expires' => 'Warranty Expires',
|
||||
'years' => 'jaar',
|
||||
)
|
||||
;
|
||||
'asset_location' => 'Update Asset Location',
|
||||
'asset_location_update_default_current' => 'Update default location AND actual location',
|
||||
'asset_location_update_default' => 'Update only default location',
|
||||
'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.',
|
||||
'asset_deployable' => 'That status is deployable. This asset can be checked out.',
|
||||
'processing_spinner' => 'Processing...',
|
||||
];
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'about_assets_title' => 'Oor bates',
|
||||
'about_assets_text' => 'Bates is items opgespoor volgens reeksnommer of bate-tag. Hulle is geneig om hoër waarde items te wees waar die identifisering van \'n spesifieke item saak maak.',
|
||||
'archived' => 'argief',
|
||||
'archived' => 'argief',
|
||||
'asset' => 'bate',
|
||||
'bulk_checkout' => 'Checkout Assets',
|
||||
'checkin' => 'Kontrole bate',
|
||||
@@ -15,8 +15,29 @@ return array(
|
||||
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.',
|
||||
'requestable' => 'Requestable',
|
||||
'requested' => 'versoek',
|
||||
'not_requestable' => 'Not Requestable',
|
||||
'requestable_status_warning' => 'Do not change requestable status',
|
||||
'restore' => 'Herstel bate',
|
||||
'pending' => 'hangende',
|
||||
'undeployable' => 'Undeployable',
|
||||
'view' => 'Bekyk bate',
|
||||
);
|
||||
'csv_error' => 'You have an error in your CSV file:',
|
||||
'import_text' => '
|
||||
<p>
|
||||
Upload a CSV that contains asset history. The assets and users MUST already exist in the system, or they will be skipped. Matching assets for history import happens against the asset tag. We will try to find a matching user based on the user\'s name you provide, and the criteria you select below. If you do not select any criteria below, it will simply try to match on the username format you configured in the Admin > General Settings.
|
||||
</p>
|
||||
|
||||
<p>Fields included in the CSV must match the headers: <strong>Asset Tag, Name, Checkout Date, Checkin Date</strong>. Any additional fields will be ignored. </p>
|
||||
|
||||
<p>Checkin Date: blank or future checkin dates will checkout items to associated user. Excluding the Checkin Date column will create a checkin date with todays date.</p>
|
||||
',
|
||||
'csv_import_match_f-l' => 'Try to match users by firstname.lastname (jane.smith) format',
|
||||
'csv_import_match_initial_last' => 'Try to match users by first initial last name (jsmith) format',
|
||||
'csv_import_match_first' => 'Try to match users by first name (jane) format',
|
||||
'csv_import_match_email' => 'Try to match users by email as username',
|
||||
'csv_import_match_username' => 'Try to match users by username',
|
||||
'error_messages' => 'Error messages:',
|
||||
'success_messages' => 'Success messages:',
|
||||
'alert_details' => 'Please see below for details.',
|
||||
'custom_export' => 'Custom Export'
|
||||
];
|
||||
|
||||
@@ -1,82 +1,82 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
'undeployable' => '<strong>Waarskuwing: </strong> Hierdie bate is gemerk as tans onbruikbaar. As hierdie status verander het, verander asseblief die batestatus.',
|
||||
'does_not_exist' => 'Bate bestaan nie.',
|
||||
'does_not_exist_or_not_requestable' => 'Goeie probeerslag. Daardie bate bestaan nie of is nie versoekbaar nie.',
|
||||
'does_not_exist_or_not_requestable' => 'That asset does not exist or is not requestable.',
|
||||
'assoc_users' => 'Hierdie bate word tans na \'n gebruiker nagegaan en kan nie uitgevee word nie. Gaan asseblief die bate eers in, en probeer dan weer uitvee.',
|
||||
|
||||
'create' => array(
|
||||
'create' => [
|
||||
'error' => 'Bate is nie geskep nie, probeer asseblief weer. :(',
|
||||
'success' => 'Bate geskep suksesvol. :)'
|
||||
),
|
||||
'success' => 'Bate geskep suksesvol. :)',
|
||||
],
|
||||
|
||||
'update' => array(
|
||||
'update' => [
|
||||
'error' => 'Bate is nie opgedateer nie, probeer asseblief weer',
|
||||
'success' => 'Bate is suksesvol opgedateer.',
|
||||
'nothing_updated' => 'Geen velde is gekies nie, dus niks is opgedateer nie.',
|
||||
),
|
||||
],
|
||||
|
||||
'restore' => array(
|
||||
'restore' => [
|
||||
'error' => 'Bate is nie herstel nie, probeer asseblief weer',
|
||||
'success' => 'Bate herstel suksesvol.'
|
||||
),
|
||||
'success' => 'Bate herstel suksesvol.',
|
||||
],
|
||||
|
||||
'audit' => array(
|
||||
'audit' => [
|
||||
'error' => 'Bate-oudit was onsuksesvol. Probeer asseblief weer.',
|
||||
'success' => 'Bate oudit suksesvol aangemeld.'
|
||||
),
|
||||
'success' => 'Bate oudit suksesvol aangemeld.',
|
||||
],
|
||||
|
||||
|
||||
'deletefile' => array(
|
||||
'deletefile' => [
|
||||
'error' => 'Lêer nie verwyder nie. Probeer asseblief weer.',
|
||||
'success' => 'Lêer suksesvol uitgevee.',
|
||||
),
|
||||
],
|
||||
|
||||
'upload' => array(
|
||||
'upload' => [
|
||||
'error' => 'Lêer (s) nie opgelaai nie. Probeer asseblief weer.',
|
||||
'success' => 'Lêer (s) suksesvol opgelaai.',
|
||||
'nofiles' => 'Jy het nie enige lêers vir oplaai gekies nie, of die lêer wat jy probeer oplaai is te groot',
|
||||
'invalidfiles' => 'Een of meer van jou lêers is te groot of is \'n filetipe wat nie toegelaat word nie. Toegelate filetipes is png, gif, jpg, doc, docx, pdf en txt.',
|
||||
),
|
||||
],
|
||||
|
||||
'import' => array(
|
||||
'import' => [
|
||||
'error' => 'Sommige items is nie korrek ingevoer nie.',
|
||||
'errorDetail' => 'Die volgende items is nie ingevoer as gevolg van foute nie.',
|
||||
'success' => "Jou lêer is ingevoer",
|
||||
'file_delete_success' => "Jou lêer is suksesvol verwyder",
|
||||
'file_delete_error' => "Die lêer kon nie uitgevee word nie",
|
||||
),
|
||||
'success' => 'Jou lêer is ingevoer',
|
||||
'file_delete_success' => 'Jou lêer is suksesvol verwyder',
|
||||
'file_delete_error' => 'Die lêer kon nie uitgevee word nie',
|
||||
],
|
||||
|
||||
|
||||
'delete' => array(
|
||||
'delete' => [
|
||||
'confirm' => 'Is jy seker jy wil hierdie bate uitvee?',
|
||||
'error' => 'Daar was \'n probleem met die verwydering van die bate. Probeer asseblief weer.',
|
||||
'nothing_updated' => 'Geen bates is gekies nie, so niks is verwyder nie.',
|
||||
'success' => 'Die bate is suksesvol verwyder.'
|
||||
),
|
||||
'success' => 'Die bate is suksesvol verwyder.',
|
||||
],
|
||||
|
||||
'checkout' => array(
|
||||
'checkout' => [
|
||||
'error' => 'Bate is nie nagegaan nie, probeer asseblief weer',
|
||||
'success' => 'Die bate is suksesvol nagegaan.',
|
||||
'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.',
|
||||
'not_available' => 'Die bate is nie beskikbaar vir die kassa nie!',
|
||||
'no_assets_selected' => 'You must select at least one asset from the list'
|
||||
),
|
||||
'no_assets_selected' => 'You must select at least one asset from the list',
|
||||
],
|
||||
|
||||
'checkin' => array(
|
||||
'checkin' => [
|
||||
'error' => 'Bate is nie nagegaan nie, probeer asseblief weer',
|
||||
'success' => 'Die bate is suksesvol nagegaan.',
|
||||
'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.',
|
||||
'already_checked_in' => 'Daardie bate is reeds nagegaan.',
|
||||
|
||||
),
|
||||
],
|
||||
|
||||
'requests' => array(
|
||||
'requests' => [
|
||||
'error' => 'Bate is nie aangevra nie, probeer asseblief weer',
|
||||
'success' => 'Die bate is suksesvol aangevra.',
|
||||
'canceled' => 'Afhandeling versoek suksesvol gekanselleer'
|
||||
)
|
||||
'canceled' => 'Afhandeling versoek suksesvol gekanselleer',
|
||||
],
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
'asset_tag' => 'Bate-tag',
|
||||
'asset_model' => 'model',
|
||||
'book_value' => 'waarde',
|
||||
'book_value' => 'Current Value',
|
||||
'change' => 'In uit',
|
||||
'checkout_date' => 'Checkout Datum',
|
||||
'checkoutto' => 'Gekontroleer',
|
||||
'current_value' => 'Current Value',
|
||||
'diff' => 'diff',
|
||||
'dl_csv' => 'Laai CSV af',
|
||||
'eol' => 'EOL',
|
||||
@@ -18,8 +19,12 @@ return array(
|
||||
'serial' => 'Serial',
|
||||
'status' => 'status',
|
||||
'title' => 'bate',
|
||||
'image' => 'Toestelbeeld',
|
||||
'image' => 'Toestelbeeld',
|
||||
'days_without_acceptance' => 'Dae sonder aanvaarding',
|
||||
'monthly_depreciation' => 'Monthly Depreciation'
|
||||
|
||||
);
|
||||
'monthly_depreciation' => 'Monthly Depreciation',
|
||||
'assigned_to' => 'Assigned To',
|
||||
'requesting_user' => 'Requesting User',
|
||||
'requested_date' => 'Requested Date',
|
||||
'changed' => 'Changed',
|
||||
'icon' => 'Icon',
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'about_kits_title' => 'About Predefined Kits',
|
||||
'about_kits_text' => 'Predefined Kits let you quickly check out a collection of items (assets, licenses, etc) to a user. This can be helpful when your onboarding process is consistent across many users and all users receive the same items.',
|
||||
'checkout' => 'Checkout Kit ',
|
||||
@@ -13,5 +13,38 @@ return array(
|
||||
'none_licenses' => 'There are not enough available seats for :license to checkout. :qty are required. ',
|
||||
'none_consumables' => 'There are not enough available units of :consumable to checkout. :qty are required. ',
|
||||
'none_accessory' => 'There are not enough available units of :accessory to checkout. :qty are required. ',
|
||||
|
||||
);
|
||||
'append_accessory' => 'Append Accessory',
|
||||
'update_appended_accessory' => 'Update appended Accessory',
|
||||
'append_consumable' => 'Append Consumable',
|
||||
'update_appended_consumable' => 'Update appended Consumable',
|
||||
'append_license' => 'Append license',
|
||||
'update_appended_license' => 'Update appended license',
|
||||
'append_model' => 'Append model',
|
||||
'update_appended_model' => 'Update appended model',
|
||||
'license_error' => 'License already attached to kit',
|
||||
'license_added_success' => 'License added successfully',
|
||||
'license_updated' => 'License was successfully updated',
|
||||
'license_none' => 'License does not exist',
|
||||
'license_detached' => 'License was successfully detached',
|
||||
'consumable_added_success' => 'Consumable added successfully',
|
||||
'consumable_updated' => 'Consumable was successfully updated',
|
||||
'consumable_error' => 'Consumable already attached to kit',
|
||||
'consumable_deleted' => 'Delete was successful',
|
||||
'consumable_none' => 'Consumable does not exist',
|
||||
'consumable_detached' => 'Consumable was successfully detached',
|
||||
'accessory_added_success' => 'Accessory added successfully',
|
||||
'accessory_updated' => 'Accessory was successfully updated',
|
||||
'accessory_detached' => 'Accessory was successfully detached',
|
||||
'accessory_error' => 'Accessory already attached to kit',
|
||||
'accessory_deleted' => 'Delete was successful',
|
||||
'accessory_none' => 'Accessory does not exist',
|
||||
'checkout_success' => 'Checkout was successful',
|
||||
'checkout_error' => 'Checkout error',
|
||||
'kit_none' => 'Kit does not exist',
|
||||
'kit_created' => 'Kit was successfully created',
|
||||
'kit_updated' => 'Kit was successfully updated',
|
||||
'kit_not_found' => 'Kit not found',
|
||||
'kit_deleted' => 'Kit was successfully deleted',
|
||||
'kit_model_updated' => 'Model was successfully updated',
|
||||
'kit_model_detached' => 'Model was successfully detached',
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'about_locations_title' => 'Oor plekke',
|
||||
'about_locations' => 'Plekke word gebruik om ligginginligting vir gebruikers, bates en ander items op te spoor',
|
||||
'assets_rtd' => 'bates', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted.
|
||||
@@ -20,4 +20,21 @@ return array(
|
||||
'parent' => 'Ouer',
|
||||
'currency' => 'Ligging Geld',
|
||||
'ldap_ou' => 'LDAP soek OU',
|
||||
);
|
||||
'user_name' => 'User Name',
|
||||
'department' => 'Department',
|
||||
'location' => 'Location',
|
||||
'asset_tag' => 'Assets Tag',
|
||||
'asset_name' => 'Name',
|
||||
'asset_category' => 'Category',
|
||||
'asset_manufacturer' => 'Manufacturer',
|
||||
'asset_model' => 'Model',
|
||||
'asset_serial' => 'Serial',
|
||||
'asset_location' => 'Location',
|
||||
'asset_checked_out' => 'Checked Out',
|
||||
'asset_expected_checkin' => 'Expected Checkin',
|
||||
'date' => 'Date:',
|
||||
'signed_by_asset_auditor' => 'Signed By (Asset Auditor):',
|
||||
'signed_by_finance_auditor' => 'Signed By (Finance Auditor):',
|
||||
'signed_by_location_manager' => 'Signed By (Location Manager):',
|
||||
'signed_by' => 'Signed Off By:',
|
||||
];
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'info' => 'Kies die opsies wat jy wil hê vir jou bateverslag.'
|
||||
);
|
||||
return [
|
||||
'info' => 'Kies die opsies wat jy wil hê vir jou bateverslag.',
|
||||
'deleted_user' => 'Deleted user',
|
||||
'send_reminder' => 'Send reminder',
|
||||
'reminder_sent' => 'Reminder sent',
|
||||
'acceptance_deleted' => 'Acceptance request deleted',
|
||||
'acceptance_request' => 'Acceptance request'
|
||||
];
|
||||
@@ -1,30 +1,39 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'ad' => 'Aktiewe gids',
|
||||
'ad_domain' => 'Active Directory-domein',
|
||||
'ad_domain_help' => 'Dit is soms dieselfde as jou e-pos domein, maar nie altyd nie.',
|
||||
'ad_append_domain_label' => 'Append domain name',
|
||||
'ad_append_domain' => 'Append domain name to username field',
|
||||
'ad_append_domain_help' => 'User isn\'t required to write "username@domain.local", they can just type "username".' ,
|
||||
'ad_append_domain_help' => 'User isn\'t required to write "username@domain.local", they can just type "username".',
|
||||
'admin_cc_email' => 'CC Email',
|
||||
'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.',
|
||||
'is_ad' => 'Dit is \'n Active Directory-bediener',
|
||||
'alerts' => 'Alerts',
|
||||
'alert_title' => 'Update Alert Settings',
|
||||
'alert_email' => 'Stuur kennisgewings aan',
|
||||
'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated',
|
||||
'alerts_enabled' => 'Alerts aangeskakel',
|
||||
'alert_interval' => 'Uitgaande Alert Drempel (in dae)',
|
||||
'alert_inv_threshold' => 'Voorraadwaarskuwingsdrempel',
|
||||
'allow_user_skin' => 'Allow user skin',
|
||||
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.' ,
|
||||
'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.',
|
||||
'asset_ids' => 'Bate ID\'s',
|
||||
'audit_interval' => 'Ouditinterval',
|
||||
'audit_interval_help' => 'As u gereeld u bates fisies moet kontroleer, vul die interval in maande in.',
|
||||
'audit_warning_days' => 'Oudit Waarskuwing Drempel',
|
||||
'audit_warning_days_help' => 'Hoeveel dae vooruit moet ons u waarsku wanneer bates verskuldig is vir ouditering?',
|
||||
'auto_increment_assets' => 'Genereer outomaties inkrementele bate-ID\'s',
|
||||
'auto_increment_assets' => 'Generate auto-incrementing asset tags',
|
||||
'auto_increment_prefix' => 'Voorvoegsel (opsioneel)',
|
||||
'auto_incrementing_help' => 'Aktiveer outomaties inkrementering van bate ID\'s om dit te stel',
|
||||
'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this',
|
||||
'backups' => 'rugsteun',
|
||||
'backups_restoring' => 'Restoring from Backup',
|
||||
'backups_upload' => 'Upload Backup',
|
||||
'backups_path' => 'Backups on the server are stored in <code>:path</code>',
|
||||
'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
|
||||
'backups_logged_out' => 'You will be logged out once your restore is complete.',
|
||||
'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ',
|
||||
'barcode_settings' => 'Barcode-instellings',
|
||||
'confirm_purge' => 'Bevestig skoonmaak',
|
||||
'confirm_purge_help' => 'Enter the text "DELETE" in the box below to purge your deleted records. This action cannot be undone and will PERMANENTLY delete all soft-deleted items and users. (You should make a backup first, just to be safe.)',
|
||||
@@ -47,6 +56,7 @@ return array(
|
||||
'barcode_type' => '2D Barcode Type',
|
||||
'alt_barcode_type' => '1D barcode tipe',
|
||||
'email_logo_size' => 'Square logos in email look best. ',
|
||||
'enabled' => 'Enabled',
|
||||
'eula_settings' => 'EULA-instellings',
|
||||
'eula_markdown' => 'Hierdie EULA laat <a href="https://help.github.com/articles/github-flavored-markdown/">Github-geurde markdown</a> toe.',
|
||||
'favicon' => 'Favicon',
|
||||
@@ -55,12 +65,17 @@ return array(
|
||||
'footer_text' => 'Additional Footer Text ',
|
||||
'footer_text_help' => 'This text will appear in the right-side footer. Links are allowed using <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>. Line breaks, headers, images, etc may result in unpredictable results.',
|
||||
'general_settings' => 'Algemene instellings',
|
||||
'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy',
|
||||
'general_settings_help' => 'Default EULA and more',
|
||||
'generate_backup' => 'Genereer rugsteun',
|
||||
'header_color' => 'Opskrif Kleur',
|
||||
'info' => 'Met hierdie instellings kan u sekere aspekte van u installasie aanpas.',
|
||||
'label_logo' => 'Label Logo',
|
||||
'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ',
|
||||
'laravel' => 'Laravel Weergawe',
|
||||
'ldap' => 'LDAP',
|
||||
'ldap_help' => 'LDAP/Active Directory',
|
||||
'ldap_client_tls_key' => 'LDAP Client TLS Key',
|
||||
'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate',
|
||||
'ldap_enabled' => 'LDAP aangeskakel',
|
||||
'ldap_integration' => 'LDAP-integrasie',
|
||||
@@ -95,9 +110,17 @@ return array(
|
||||
'ldap_activated_flag_help' => 'This flag is used to determine whether a user can login to Snipe-IT and does not affect the ability to check items in or out to them.',
|
||||
'ldap_emp_num' => 'LDAP Werknemersnommer',
|
||||
'ldap_email' => 'LDAP-e-pos',
|
||||
'license' => 'Software License',
|
||||
'ldap_test' => 'Test LDAP',
|
||||
'ldap_test_sync' => 'Test LDAP Synchronization',
|
||||
'license' => 'Software License',
|
||||
'load_remote_text' => 'Remote Scripts',
|
||||
'load_remote_help_text' => 'Hierdie Snipe-IT installasie kan skrifte van die buitewêreld laai.',
|
||||
'login' => 'Login Attempts',
|
||||
'login_attempt' => 'Login Attempt',
|
||||
'login_ip' => 'IP Address',
|
||||
'login_success' => 'Success?',
|
||||
'login_user_agent' => 'User Agent',
|
||||
'login_help' => 'List of attempted logins',
|
||||
'login_note' => 'Login Nota',
|
||||
'login_note_help' => 'Voeg opsioneel \'n paar sinne op jou aanmeldskerm, byvoorbeeld om mense te help wat \'n verlore of gesteelde toestel gevind het. Hierdie veld aanvaar <a href="https://help.github.com/articles/github-flavored-markdown/">Gitub-gegeurde markdown</a>',
|
||||
'login_remote_user_text' => 'Remote User login options',
|
||||
@@ -118,16 +141,28 @@ return array(
|
||||
'optional' => 'opsioneel',
|
||||
'per_page' => 'Resultate per bladsy',
|
||||
'php' => 'PHP weergawe',
|
||||
'php_info' => 'PHP Info',
|
||||
'php_overview' => 'PHP',
|
||||
'php_overview_keywords' => 'phpinfo, system, info',
|
||||
'php_overview_help' => 'PHP System info',
|
||||
'php_gd_info' => 'Jy moet php-gd installeer om QR-kodes te vertoon, sien installeringsinstruksies.',
|
||||
'php_gd_warning' => 'PHP Image Processing en GD plugin is NIE geïnstalleer nie.',
|
||||
'pwd_secure_complexity' => 'Wagwoord Kompleksiteit',
|
||||
'pwd_secure_complexity_help' => 'Kies watter wagwoord kompleksiteit reëls jy wil afdwing.',
|
||||
'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Password cannot be the same as first name, last name, email, or username',
|
||||
'pwd_secure_complexity_letters' => 'Require at least one letter',
|
||||
'pwd_secure_complexity_numbers' => 'Require at least one number',
|
||||
'pwd_secure_complexity_symbols' => 'Require at least one symbol',
|
||||
'pwd_secure_complexity_case_diff' => 'Require at least one uppercase and one lowercase',
|
||||
'pwd_secure_min' => 'Wagwoord minimum karakters',
|
||||
'pwd_secure_min_help' => 'Minimum permitted value is 8',
|
||||
'pwd_secure_uncommon' => 'Voorkom algemene wagwoorde',
|
||||
'pwd_secure_uncommon_help' => 'Dit sal gebruikers nie toelaat om algemene wagwoorde te gebruik van die top 10,000 wagwoorde wat in oortredings gerapporteer is nie.',
|
||||
'qr_help' => 'Aktiveer QR-kodes eers om dit te stel',
|
||||
'qr_text' => 'QR Kode Teks',
|
||||
'saml' => 'SAML',
|
||||
'saml_title' => 'Update SAML settings',
|
||||
'saml_help' => 'SAML settings',
|
||||
'saml_enabled' => 'SAML enabled',
|
||||
'saml_integration' => 'SAML Integration',
|
||||
'saml_sp_entityid' => 'Entity ID',
|
||||
@@ -139,7 +174,7 @@ return array(
|
||||
'saml_idp_metadata_help' => 'You can specify the IdP metadata using a URL or XML file.',
|
||||
'saml_attr_mapping_username' => 'Attribute Mapping - Username',
|
||||
'saml_attr_mapping_username_help' => 'NameID will be used if attribute mapping is unspecified or invalid.',
|
||||
'saml_forcelogin_label' => 'SAML Force Login',
|
||||
'saml_forcelogin_label' => 'SAML Default Login',
|
||||
'saml_forcelogin' => 'Make SAML the primary login',
|
||||
'saml_forcelogin_help' => 'You can use \'/login?nosaml\' to get to the normal login page.',
|
||||
'saml_slo_label' => 'SAML Single Log Out',
|
||||
@@ -147,6 +182,7 @@ return array(
|
||||
'saml_slo_help' => 'This will cause the user to be first redirected to the IdP on logout. Leave unchecked if the IdP doesn\'t correctly support SP-initiated SAML SLO.',
|
||||
'saml_custom_settings' => 'SAML Custom Settings',
|
||||
'saml_custom_settings_help' => 'You can specify additional settings to the onelogin/php-saml library. Use at your own risk.',
|
||||
'saml_download' => 'Download Metadata',
|
||||
'setting' => 'omgewing',
|
||||
'settings' => 'instellings',
|
||||
'show_alerts_in_menu' => 'Show alerts in top menu',
|
||||
@@ -157,6 +193,9 @@ return array(
|
||||
'show_images_in_email' => 'Show images in emails',
|
||||
'show_images_in_email_help' => 'Uncheck this box if your Snipe-IT installation is behind a VPN or closed network and users outside the network will not be able to load images served from this installation in their emails.',
|
||||
'site_name' => 'Site Naam',
|
||||
'slack' => 'Slack',
|
||||
'slack_title' => 'Update Slack Settings',
|
||||
'slack_help' => 'Slack settings',
|
||||
'slack_botname' => 'Slack Botname',
|
||||
'slack_channel' => 'Slack Channel',
|
||||
'slack_endpoint' => 'Slack Endpoint',
|
||||
@@ -173,6 +212,8 @@ return array(
|
||||
'update' => 'Opdateer instellings',
|
||||
'value' => 'waarde',
|
||||
'brand' => 'Handelsmerk',
|
||||
'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css',
|
||||
'brand_help' => 'Logo, Site Name',
|
||||
'web_brand' => 'Web Branding Type',
|
||||
'about_settings_title' => 'Oor instellings',
|
||||
'about_settings_text' => 'Met hierdie instellings kan u sekere aspekte van u installasie aanpas.',
|
||||
@@ -184,6 +225,7 @@ return array(
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Verwyder verwyderde rekords',
|
||||
'purge_deleted' => 'Purge Deleted ',
|
||||
'labels_display_bgutter' => 'Etiket onderkant goot',
|
||||
'labels_display_sgutter' => 'Label side goot',
|
||||
'labels_fontsize' => 'Etiket lettergrootte',
|
||||
@@ -229,4 +271,51 @@ return array(
|
||||
'unique_serial_help_text' => 'Checking this box will enforce a uniqueness constraint on asset serials',
|
||||
'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' => 'OAuth',
|
||||
'oauth_help' => 'Oauth Endpoint Settings',
|
||||
'asset_tag_title' => 'Update Asset Tag Settings',
|
||||
'barcode_title' => 'Update Barcode Settings',
|
||||
'barcodes' => 'Barcodes',
|
||||
'barcodes_help_overview' => 'Barcode & QR settings',
|
||||
'barcodes_help' => 'This will attempt to delete cached barcodes. This would typically only be used if your barcode settings have changed, or if your Snipe-IT URL has changed. Barcodes will be re-generated when accessed next.',
|
||||
'barcodes_spinner' => 'Attempting to delete files...',
|
||||
'barcode_delete_cache' => 'Delete Barcode Cache',
|
||||
'branding_title' => 'Update Branding Settings',
|
||||
'general_title' => 'Update General Settings',
|
||||
'mail_test' => 'Send Test',
|
||||
'mail_test_help' => 'This will attempt to send a test mail to :replyto.',
|
||||
'filter_by_keyword' => 'Filter by setting keyword',
|
||||
'security' => 'Security',
|
||||
'security_title' => 'Update Security Settings',
|
||||
'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication',
|
||||
'security_help' => 'Two-factor, Password Restrictions',
|
||||
'groups_keywords' => 'permissions, permission groups, authorization',
|
||||
'groups_help' => 'Account permission groups',
|
||||
'localization' => 'Localization',
|
||||
'localization_title' => 'Update Localization Settings',
|
||||
'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation',
|
||||
'localization_help' => 'Language, date display',
|
||||
'notifications' => 'Notifications',
|
||||
'notifications_help' => 'Email alerts, audit settings',
|
||||
'asset_tags_help' => 'Incrementing and prefixes',
|
||||
'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.',
|
||||
'ldap_ad' => 'LDAP/AD',
|
||||
'employee_number' => 'Employee Number',
|
||||
'create_admin_user' => 'Create a User ::',
|
||||
'create_admin_success' => 'Success! Your admin user has been added!',
|
||||
'create_admin_redirect' => 'Click here to go to your app login!',
|
||||
'setup_migrations' => 'Database Migrations ::',
|
||||
'setup_no_migrations' => 'There was nothing to migrate. Your database tables were already set up!',
|
||||
'setup_successful_migrations' => 'Your database tables have been created',
|
||||
'setup_migration_output' => 'Migration output:',
|
||||
'setup_migration_create_user' => 'Next: Create User',
|
||||
'ldap_settings_link' => 'LDAP Settings Page',
|
||||
'slack_test' => 'Test <i class="fab fa-slack"></i> Integration',
|
||||
];
|
||||
|
||||
@@ -1,22 +1,43 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
|
||||
'update' => array(
|
||||
'update' => [
|
||||
'error' => '\'N Fout het voorgekom tydens opdatering.',
|
||||
'success' => 'Stellings suksesvol opgedateer.'
|
||||
),
|
||||
'backup' => array(
|
||||
'success' => 'Stellings suksesvol opgedateer.',
|
||||
],
|
||||
'backup' => [
|
||||
'delete_confirm' => 'Is jy seker jy wil hierdie rugsteunlêer uitvee? Hierdie handeling kan nie ongedaan gemaak word nie.',
|
||||
'file_deleted' => 'Die rugsteunlêer is suksesvol verwyder.',
|
||||
'generated' => '\'N Nuwe rugsteunlêer is suksesvol geskep.',
|
||||
'file_not_found' => 'Daardie rugsteunlêer kon nie op die bediener gevind word nie.',
|
||||
),
|
||||
'purge' => array(
|
||||
'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).',
|
||||
'restore_confirm' => 'Are you sure you wish to restore your database from :filename?'
|
||||
],
|
||||
'purge' => [
|
||||
'error' => '\'N Fout het voorgekom tydens suiwering.',
|
||||
'validation_failed' => 'Jou skoonmaakbevestiging is verkeerd. Tik asseblief die woord "DELETE" in die bevestigingsboks.',
|
||||
'success' => 'Geskrapte rekords verwyder.'
|
||||
),
|
||||
|
||||
);
|
||||
'success' => 'Geskrapte rekords verwyder.',
|
||||
],
|
||||
'mail' => [
|
||||
'sending' => 'Sending Test Email...',
|
||||
'success' => 'Mail sent!',
|
||||
'error' => 'Mail could not be sent.',
|
||||
'additional' => 'No additional error message provided. Check your mail settings and your app log.'
|
||||
],
|
||||
'ldap' => [
|
||||
'testing' => 'Testing LDAP Connection, Binding & Query ...',
|
||||
'500' => '500 Server Error. Please check your server logs for more information.',
|
||||
'error' => 'Something went wrong :(',
|
||||
'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:',
|
||||
'testing_authentication' => 'Testing LDAP Authentication...',
|
||||
'authentication_success' => 'User authenticated against LDAP successfully!'
|
||||
],
|
||||
'slack' => [
|
||||
'sending' => 'Sending Slack test message...',
|
||||
'success_pt1' => 'Success! Check the ',
|
||||
'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.',
|
||||
'500' => '500 Server Error.',
|
||||
'error' => 'Something went wrong.',
|
||||
]
|
||||
];
|
||||
|
||||
@@ -1,32 +1,31 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
'does_not_exist' => 'Statuslabel bestaan nie.',
|
||||
'assoc_assets' => 'Hierdie statusetiket word tans geassosieer met ten minste een bate en kan nie uitgevee word nie. Dateer asseblief jou bates op om nie meer hierdie status te verwys nie en probeer weer.',
|
||||
|
||||
|
||||
'create' => array(
|
||||
'create' => [
|
||||
'error' => 'Statuslabel is nie geskep nie, probeer asseblief weer.',
|
||||
'success' => 'Status Label suksesvol geskep.'
|
||||
),
|
||||
'success' => 'Status Label suksesvol geskep.',
|
||||
],
|
||||
|
||||
'update' => array(
|
||||
'update' => [
|
||||
'error' => 'Statuslabel is nie opgedateer nie, probeer asseblief weer',
|
||||
'success' => 'Status Label suksesvol opgedateer.'
|
||||
),
|
||||
'success' => 'Status Label suksesvol opgedateer.',
|
||||
],
|
||||
|
||||
'delete' => array(
|
||||
'delete' => [
|
||||
'confirm' => 'Is jy seker jy wil hierdie Status Label uitvee?',
|
||||
'error' => 'Daar was \'n probleem met die verwydering van die statusetiket. Probeer asseblief weer.',
|
||||
'success' => 'Die statusetiket is suksesvol verwyder.'
|
||||
),
|
||||
'success' => 'Die statusetiket is suksesvol verwyder.',
|
||||
],
|
||||
|
||||
'help' => array(
|
||||
'help' => [
|
||||
'undeployable' => 'Hierdie bates kan nie aan enigiemand toegewys word nie.',
|
||||
'deployable' => 'Hierdie bates kan nagegaan word. Sodra hulle toegewys is, sal hulle \'n meta-status van <i class="fa fa-circle text-blue"></i> <strong>Deployed</strong> aanvaar.',
|
||||
'deployable' => 'These assets can be checked out. Once they are assigned, they will assume a meta status of <i class="fas fa-circle text-blue"></i> <strong>Deployed</strong>.',
|
||||
'archived' => 'Hierdie bates kan nie nagegaan word nie en sal eers in die Argief-aansig verskyn. Dit is nuttig vir die behoud van inligting oor bates vir begrotings / historiese doeleindes, maar om hulle uit die dag-tot-dag-bate lys te hou.',
|
||||
'pending' => 'Hierdie bates kan nog nie aan iemand toegewys word nie, wat dikwels gebruik word vir items wat buite herstel is, maar sal na verwagting terugkeer.',
|
||||
),
|
||||
],
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
|
||||
return array(
|
||||
return [
|
||||
'activated_help_text' => 'This user can login',
|
||||
'activated_disabled_help_text' => 'You cannot edit activation status for your own account.',
|
||||
'assets_user' => 'Bates toegewys aan: naam',
|
||||
@@ -13,7 +12,7 @@ return array(
|
||||
'edit' => 'Wysig gebruiker',
|
||||
'filetype_info' => 'Toegelate filetipes is png, gif, jpg, jpeg, doc, docx, pdf, txt, zip en rar.',
|
||||
'history_user' => 'Geskiedenis vir: naam',
|
||||
'info' => 'info',
|
||||
'info' => 'info',
|
||||
'restore_user' => 'Klik hier om dit te herstel.',
|
||||
'last_login' => 'Laaste Aanmelding',
|
||||
'ldap_config_text' => 'LDAP-konfigurasie-instellings kan Admin> Instellings gevind word. Die (opsionele) gekose ligging sal vir alle ingevoerde gebruikers gestel word.',
|
||||
@@ -25,4 +24,14 @@ return array(
|
||||
'two_factor_admin_optin_help' => 'Jou huidige administrasie-instellings laat selektiewe handhawing van twee-faktor-verifikasie toe.',
|
||||
'two_factor_enrolled' => '2FA-toestel ingeskryf',
|
||||
'two_factor_active' => '2FA aktief',
|
||||
);
|
||||
'user_deactivated' => 'User is de-activated',
|
||||
'activation_status_warning' => 'Do not change activation status',
|
||||
'group_memberships_helpblock' => 'Only superadmins may edit group memberships.',
|
||||
'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.',
|
||||
'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.',
|
||||
'remove_group_memberships' => 'Remove Group Memberships',
|
||||
'warning_deletion' => 'WARNING:',
|
||||
'warning_deletion_information' => 'You are about to delete the :count user(s) listed below. Super admin names are highlighted in red.',
|
||||
'update_user_asssets_status' => 'Update all assets for these users to this status',
|
||||
'checkin_user_properties' => 'Check in all properties associated with these users',
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'actions' => 'aksies',
|
||||
'add' => 'Voeg nuwe',
|
||||
'cancel' => 'kanselleer',
|
||||
@@ -8,11 +8,17 @@ return array(
|
||||
'delete' => 'verwyder',
|
||||
'edit' => 'wysig',
|
||||
'restore' => 'herstel',
|
||||
'remove' => 'Remove',
|
||||
'request' => 'versoek',
|
||||
'submit' => 'Indien',
|
||||
'upload' => 'oplaai',
|
||||
'select_file' => 'Kies lêer ...',
|
||||
'select_file' => 'Kies lêer ...',
|
||||
'select_files' => 'Select Files...',
|
||||
'generate_labels' => '{1} Generate Label|[2,*] Generate Labels',
|
||||
'send_password_link' => 'Send Password Reset Link',
|
||||
);
|
||||
'send_password_link' => 'Send Password Reset Link',
|
||||
'go' => 'Go',
|
||||
'bulk_actions' => 'Bulk Actions',
|
||||
'add_maintenance' => 'Add Maintenance',
|
||||
'append' => 'Append',
|
||||
'new' => 'New',
|
||||
];
|
||||
|
||||
@@ -19,7 +19,10 @@
|
||||
'asset' => 'bate',
|
||||
'asset_report' => 'Asset Report',
|
||||
'asset_tag' => 'Bate-tag',
|
||||
'assets_available' => 'bates beskikbaar',
|
||||
'asset_tags' => 'Asset Tags',
|
||||
'assets_available' => 'Assets available',
|
||||
'accept_assets' => 'Accept Assets :name',
|
||||
'accept_assets_menu' => 'Accept Assets',
|
||||
'audit' => 'oudit',
|
||||
'audit_report' => 'Ouditlogboek',
|
||||
'assets' => 'bates',
|
||||
@@ -30,6 +33,10 @@
|
||||
'bulkaudit' => 'Grootmaat Oudit',
|
||||
'bulkaudit_status' => 'Ouditstatus',
|
||||
'bulk_checkout' => 'Grootmaat Checkout',
|
||||
'bulk_edit' => 'Bulk Edit',
|
||||
'bulk_delete' => 'Bulk Delete',
|
||||
'bulk_actions' => 'Bulk Actions',
|
||||
'bulk_checkin_delete' => 'Bulk Checkin & Delete',
|
||||
'bystatus' => 'by Status',
|
||||
'cancel' => 'kanselleer',
|
||||
'categories' => 'kategorieë',
|
||||
@@ -44,13 +51,13 @@
|
||||
'checkins_count' => 'Checkins',
|
||||
'user_requests_count' => 'Requests',
|
||||
'city' => 'Stad',
|
||||
'click_here' => 'Klik hier',
|
||||
'click_here' => 'Klik hier',
|
||||
'clear_selection' => 'Clear Selection',
|
||||
'companies' => 'maatskappye',
|
||||
'company' => 'maatskappy',
|
||||
'component' => 'komponent',
|
||||
'components' => 'komponente',
|
||||
'complete' => 'volledige',
|
||||
'complete' => 'volledige',
|
||||
'consumable' => 'verbruikbare',
|
||||
'consumables' => 'Consumables',
|
||||
'country' => 'land',
|
||||
@@ -62,6 +69,8 @@
|
||||
'updated_at' => 'Opgedateer op',
|
||||
'currency' => '$', // this is deprecated
|
||||
'current' => 'Huidige',
|
||||
'current_password' => 'Current Password',
|
||||
'customize_report' => 'Customize Report',
|
||||
'custom_report' => 'Aangepaste bateverslag',
|
||||
'dashboard' => 'Dashboard',
|
||||
'days' => 'dae',
|
||||
@@ -73,19 +82,22 @@
|
||||
'delete_confirm' => 'Are you sure you wish to delete :item?',
|
||||
'deleted' => 'geskrap',
|
||||
'delete_seats' => 'Plekke verwyder',
|
||||
'deletion_failed' => 'Deletion failed',
|
||||
'departments' => 'departemente',
|
||||
'department' => 'Departement',
|
||||
'department' => 'Departement',
|
||||
'deployed' => 'ontplooi',
|
||||
'depreciation' => 'waardevermindering',
|
||||
'depreciations' => 'Depreciations',
|
||||
'depreciation_report' => 'Waardeverminderingsverslag',
|
||||
'details' => 'Details',
|
||||
'download' => 'Aflaai',
|
||||
'download_all' => 'Download All',
|
||||
'depreciation' => 'waardevermindering',
|
||||
'download_all' => 'Download All',
|
||||
'editprofile' => 'Wysig jou profiel',
|
||||
'eol' => 'EOL',
|
||||
'email_domain' => 'E-pos Domein',
|
||||
'email_format' => 'E-pos formaat',
|
||||
'email_domain_help' => 'Dit word gebruik om e-posadresse te genereer wanneer u dit invoer',
|
||||
'error' => 'Error',
|
||||
'filastname_format' => 'Eerste Voorletter (jsmith@voorbeeld.com)',
|
||||
'firstname_lastname_format' => 'Vir Naam Van (jane.smith@example.com)',
|
||||
'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith@example.com)',
|
||||
@@ -102,16 +114,21 @@
|
||||
'file_name' => 'lêer',
|
||||
'file_type' => 'File Type',
|
||||
'file_uploads' => 'Lêeroplaaie',
|
||||
'file_upload' => 'File Upload',
|
||||
'generate' => 'genereer',
|
||||
'github_markdown' => 'This field accepts <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
|
||||
'generate_labels' => 'Generate Labels',
|
||||
'github_markdown' => 'This field accepts <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
|
||||
'groups' => 'groepe',
|
||||
'gravatar_email' => 'Gravatar e-pos adres',
|
||||
'gravatar_url' => '<a href="http://gravatar.com"><small>Change your avatar at Gravatar.com</small></a>.',
|
||||
'history' => 'Geskiedenis',
|
||||
'history_for' => 'Geskiedenis vir',
|
||||
'id' => 'ID',
|
||||
'image' => 'Image',
|
||||
'image_delete' => 'Vee prent uit',
|
||||
'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.',
|
||||
'import' => 'invoer',
|
||||
'importing' => 'Importing',
|
||||
@@ -121,6 +138,7 @@
|
||||
'asset_maintenance_report' => 'Asset Maintenance Report',
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'item' => 'item',
|
||||
'item_name' => 'Item Name',
|
||||
'insufficient_permissions' => 'Onvoldoende toestemmings!',
|
||||
'kits' => 'Predefined Kits',
|
||||
'language' => 'Taal',
|
||||
@@ -132,7 +150,7 @@
|
||||
'licenses_available' => 'lisensies beskikbaar',
|
||||
'licenses' => 'lisensies',
|
||||
'list_all' => 'Lys almal',
|
||||
'loading' => 'laai',
|
||||
'loading' => 'Loading... please wait....',
|
||||
'lock_passwords' => 'This field value will not be saved in a demo installation.',
|
||||
'feature_disabled' => 'Hierdie funksie is afgeskakel vir die demo-installasie.',
|
||||
'location' => 'plek',
|
||||
@@ -141,15 +159,17 @@
|
||||
'logout' => 'Teken uit',
|
||||
'lookup_by_tag' => 'Opsoek deur Asset Tag',
|
||||
'maintenances' => 'Maintenances',
|
||||
'manage_api_keys' => 'Manage API Keys',
|
||||
'manufacturer' => 'vervaardiger',
|
||||
'manufacturers' => 'vervaardigers',
|
||||
'markdown' => 'Hierdie veld laat <a href="https://help.github.com/articles/github-flavored-markdown/">Gitub-gegeurde markdown</a> toe.',
|
||||
'min_amt' => 'Min. HOEV',
|
||||
'min_amt_help' => 'Minimum aantal items wat beskikbaar moet wees voordat \'n waarskuwing geaktiveer word.',
|
||||
'min_amt_help' => 'Minimum number of items that should be available before an alert gets triggered. Leave Min. QTY blank if you do not want to receive alerts for low inventory.',
|
||||
'model_no' => 'Model Nr.',
|
||||
'months' => 'maande',
|
||||
'moreinfo' => 'Meer inligting',
|
||||
'name' => 'naam',
|
||||
'new_password' => 'New Password',
|
||||
'next' => 'volgende',
|
||||
'next_audit_date' => 'Volgende ouditdatum',
|
||||
'last_audit' => 'Laaste Oudit',
|
||||
@@ -171,19 +191,26 @@
|
||||
'purchase_date' => 'Aankoop datum',
|
||||
'qty' => 'HOEV',
|
||||
'quantity' => 'hoeveelheid',
|
||||
'quantity_minimum' => 'You have :count items below or almost below minimum quantity levels',
|
||||
'ready_to_deploy' => 'Klaar om te implementeer',
|
||||
'recent_activity' => 'Onlangse aktiwiteite',
|
||||
'remaining' => 'Remaining',
|
||||
'remove_company' => 'Verwyder Maatskappyvereniging',
|
||||
'reports' => 'Berigte',
|
||||
'restored' => 'restored',
|
||||
'restore' => 'Restore',
|
||||
'requestable_models' => 'Requestable Models',
|
||||
'requested' => 'versoek',
|
||||
'requested_date' => 'Requested Date',
|
||||
'requested_assets' => 'Requested Assets',
|
||||
'requested_assets_menu' => 'Requested Assets',
|
||||
'request_canceled' => 'Versoek gekanselleer',
|
||||
'save' => 'Save',
|
||||
'select' => 'Kies',
|
||||
'select_all' => 'Select All',
|
||||
'search' => 'Soek',
|
||||
'select_category' => 'Kies \'n kategorie',
|
||||
'select_department' => 'Kies \'n Departement',
|
||||
'select_department' => 'Kies \'n Departement',
|
||||
'select_depreciation' => 'Kies \'n waardeverminderingstipe',
|
||||
'select_location' => 'Kies \'n plek',
|
||||
'select_manufacturer' => 'Kies \'n vervaardiger',
|
||||
@@ -200,6 +227,7 @@
|
||||
'sign_in' => 'Teken in',
|
||||
'signature' => 'Handtekening',
|
||||
'skin' => 'Skin',
|
||||
'slack_msg_note' => 'A slack message will be sent',
|
||||
'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!',
|
||||
'some_features_disabled' => 'DEMO MODE: Sommige funksies is afgeskakel vir hierdie installasie.',
|
||||
'site_name' => 'Site Naam',
|
||||
@@ -211,6 +239,7 @@
|
||||
'sure_to_delete' => 'Is jy seker jy wil verwyder',
|
||||
'submit' => 'Indien',
|
||||
'target' => 'teiken',
|
||||
'toggle_navigation' => 'Toogle Navigation',
|
||||
'time_and_date_display' => 'Tyd en datum vertoon',
|
||||
'total_assets' => 'totale bates',
|
||||
'total_licenses' => 'totale lisensies',
|
||||
@@ -230,6 +259,7 @@
|
||||
'users' => 'gebruikers',
|
||||
'viewall' => 'View All',
|
||||
'viewassets' => 'Bekyk Toegewysde Bates',
|
||||
'viewassetsfor' => 'View Assets for :name',
|
||||
'website' => 'webwerf',
|
||||
'welcome' => 'Welkom, naam',
|
||||
'years' => 'jaar',
|
||||
@@ -243,8 +273,78 @@
|
||||
'accept' => 'Accept :asset',
|
||||
'i_accept' => 'I accept',
|
||||
'i_decline' => 'I decline',
|
||||
'accept_decline' => 'Accept/Decline',
|
||||
'sign_tos' => 'Sign below to indicate that you agree to the terms of service:',
|
||||
'clear_signature' => 'Clear Signature',
|
||||
'show_help' => 'Show help',
|
||||
'hide_help' => 'Hide help',
|
||||
];
|
||||
'view_all' => 'view all',
|
||||
'hide_deleted' => 'Hide Deleted',
|
||||
'email' => 'Email',
|
||||
'do_not_change' => 'Do Not Change',
|
||||
'bug_report' => 'Report a Bug',
|
||||
'user_manual' => 'User\'s Manual',
|
||||
'setup_step_1' => 'Step 1',
|
||||
'setup_step_2' => 'Step 2',
|
||||
'setup_step_3' => 'Step 3',
|
||||
'setup_step_4' => 'Step 4',
|
||||
'setup_config_check' => 'Configuration Check',
|
||||
'setup_create_database' => 'Create Database Tables',
|
||||
'setup_create_admin' => 'Create Admin User',
|
||||
'setup_done' => 'Finished!',
|
||||
'bulk_edit_about_to' => 'You are about to edit the following: ',
|
||||
'checked_out' => 'Checked Out',
|
||||
'checked_out_to' => 'Checked out to',
|
||||
'fields' => 'Fields',
|
||||
'last_checkout' => 'Last Checkout',
|
||||
'due_to_checkin' => 'The following :count items are due to be checked in soon:',
|
||||
'expected_checkin' => 'Expected Checkin',
|
||||
'reminder_checked_out_items' => 'This is a reminder of the items currently checked out to you. If you feel this list is inaccurate (something is missing, or something appears here that you believe you never received), please email :reply_to_name at :reply_to_address.',
|
||||
'changed' => 'Changed',
|
||||
'to' => 'To',
|
||||
'report_fields_info' => '<p>Select the fields you would like to include in your custom report, and click Generate. The file (custom-asset-report-YYYY-mm-dd.csv) will download automatically, and you can open it in Excel.</p>
|
||||
<p>If you would like to export only certain assets, use the options below to fine-tune your results.</p>',
|
||||
'range' => 'Range',
|
||||
'bom_remark' => 'Add a BOM (byte-order mark) to this CSV',
|
||||
'improvements' => 'Improvements',
|
||||
'information' => 'Information',
|
||||
'permissions' => 'Permissions',
|
||||
'managed_ldap' => '(Managed via LDAP)',
|
||||
'export' => 'Export',
|
||||
'ldap_sync' => 'LDAP Sync',
|
||||
'ldap_user_sync' => 'LDAP User Sync',
|
||||
'synchronize' => 'Synchronize',
|
||||
'sync_results' => 'Synchronization Results',
|
||||
'license_serial' => 'Serial/Product Key',
|
||||
'invalid_category' => 'Invalid category',
|
||||
'dashboard_info' => 'This is your dashboard. There are many like it, but this one is yours.',
|
||||
'60_percent_warning' => '60% Complete (warning)',
|
||||
'dashboard_empty' => 'It looks like you haven not added anything yet, so we do not have anything awesome to display. Get started by adding some assets, accessories, consumables, or licenses now!',
|
||||
'new_asset' => 'New Asset',
|
||||
'new_license' => 'New License',
|
||||
'new_accessory' => 'New Accessory',
|
||||
'new_consumable' => 'New Consumable',
|
||||
'collapse' => 'Collapse',
|
||||
'assigned' => 'Assigned',
|
||||
'asset_count' => 'Asset Count',
|
||||
'accessories_count' => 'Accessories Count',
|
||||
'consumables_count' => 'Consumables Count',
|
||||
'components_count' => 'Components Count',
|
||||
'licenses_count' => 'Licenses Count',
|
||||
'notification_error' => 'Error:',
|
||||
'notification_error_hint' => 'Please check the form below for errors',
|
||||
'notification_success' => 'Success:',
|
||||
'notification_warning' => 'Warning:',
|
||||
'notification_info' => 'Info:',
|
||||
'asset_information' => 'Asset Information',
|
||||
'model_name' => 'Model Name:',
|
||||
'asset_name' => 'Asset Name:',
|
||||
'consumable_information' => 'Consumable Information:',
|
||||
'consumable_name' => 'Consumable Name:',
|
||||
'accessory_information' => 'Accessory Information:',
|
||||
'accessory_name' => 'Accessory Name:',
|
||||
'clone_item' => 'Clone Item',
|
||||
'checkout_tooltip' => 'Check this item out',
|
||||
'checkin_tooltip' => 'Check this item in',
|
||||
'checkout_user_tooltip' => 'Check this item out to a user',
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -13,9 +13,9 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
"more_info_title" => "More Info",
|
||||
'more_info_title' => 'More Info',
|
||||
|
||||
"audit_help" => "Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log.<br><br>Note that is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.",
|
||||
'audit_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log.<br><br>Note that is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.',
|
||||
|
||||
'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.',
|
||||
|
||||
@@ -31,6 +31,4 @@ return array(
|
||||
|
||||
'depreciations' => 'You can set up asset depreciations to depreciate assets based on straight-line depreciation.',
|
||||
|
||||
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
'a_user_canceled' => '\'N Gebruiker het \'n itemversoek op die webwerf gekanselleer',
|
||||
'a_user_requested' => '\'N Gebruiker het \'n item op die webwerf versoek',
|
||||
'accessory_name' => 'Toebehore Naam:',
|
||||
@@ -59,7 +59,7 @@ return array(
|
||||
'test_mail_text' => 'Dit is \'n toets van die Snipe-IT Batebestuurstelsel. As jy dit het, werk die pos :)',
|
||||
'the_following_item' => 'Die volgende item is nagegaan:',
|
||||
'low_inventory_alert' => 'There is :count item that is below minimum inventory or will soon be low.|There are :count items that are below minimum inventory or will soon be low.',
|
||||
'assets_warrantee_alert' => 'There is :count asset with a warrantee expiring in the next :threshold days.|There are :count assets with warrantees expiring in the next :threshold days.',
|
||||
'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.',
|
||||
'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.',
|
||||
'to_reset' => 'Om jou webadres te herstel, voltooi hierdie vorm:',
|
||||
'type' => 'tipe',
|
||||
@@ -75,5 +75,5 @@ return array(
|
||||
'Expected_Checkin_Report' => 'Expected asset checkin report',
|
||||
'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching',
|
||||
'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date',
|
||||
'your_assets' => 'View Your Assets'
|
||||
);
|
||||
'your_assets' => 'View Your Assets',
|
||||
];
|
||||
|
||||
@@ -4,4 +4,3 @@ return [
|
||||
'sent' => 'Jou wagwoord skakel is gestuur!',
|
||||
'user' => 'No matching active user found with that email.',
|
||||
];
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -64,6 +64,7 @@ return array(
|
||||
'string' => 'Die: kenmerk moet ten minste wees: min karakters.',
|
||||
'array' => 'Die: Attribuut moet ten minste: min items hê.',
|
||||
],
|
||||
'starts_with' => 'The :attribute must start with one of the following: :values.',
|
||||
'not_in' => 'Die gekose: attribuut is ongeldig.',
|
||||
'numeric' => 'Die: Attribuut moet \'n nommer wees.',
|
||||
'present' => 'Die: attribuut veld moet teenwoordig wees.',
|
||||
@@ -88,8 +89,8 @@ return array(
|
||||
'unique' => 'Die: Attribuut is reeds geneem.',
|
||||
'uploaded' => 'Die: kenmerk kon nie opgelaai word nie.',
|
||||
'url' => 'Die: Attribuutformaat is ongeldig.',
|
||||
"unique_undeleted" => "The :attribute must be unique.",
|
||||
"non_circular" => "The :attribute must not create a circular reference.",
|
||||
'unique_undeleted' => 'The :attribute must be unique.',
|
||||
'non_circular' => 'The :attribute must not create a circular reference.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -102,7 +103,6 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
@@ -115,11 +115,11 @@ return array(
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'alpha_space' => "Die: attribuut veld bevat 'n karakter wat nie toegelaat word nie.",
|
||||
"email_array" => "Een of meer e-posadresse is ongeldig.",
|
||||
"hashed_pass" => "Jou huidige wagwoord is verkeerd",
|
||||
'alpha_space' => 'Die: attribuut veld bevat \'n karakter wat nie toegelaat word nie.',
|
||||
'email_array' => 'Een of meer e-posadresse is ongeldig.',
|
||||
'hashed_pass' => 'Jou huidige wagwoord is verkeerd',
|
||||
'dumbpwd' => 'Daardie wagwoord is te algemeen.',
|
||||
"statuslabel_type" => "U moet 'n geldige statusetiket tipe kies",
|
||||
'statuslabel_type' => 'U moet \'n geldige statusetiket tipe kies',
|
||||
],
|
||||
|
||||
/*
|
||||
@@ -135,4 +135,4 @@ return array(
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user