Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe
2015-12-30 15:47:00 -08:00
323 changed files with 5631 additions and 880 deletions
@@ -170,7 +170,13 @@ class AccessoriesController extends AdminController
// Update the accessory data
$accessory->name = e(Input::get('name'));
$accessory->location_id = e(Input::get('location_id'));
if (e(Input::get('location_id')) == '') {
$accessory->location_id = NULL;
} else {
$accessory->location_id = e(Input::get('location_id'));
}
$accessory->category_id = e(Input::get('category_id'));
$accessory->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$accessory->order_number = e(Input::get('order_number'));
@@ -88,7 +88,7 @@
foreach($maintenances as $maintenance) {
$actions = '<nobr><a href="'.route('update/asset_maintenance', $maintenance->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/statuslabel', $maintenance->id).'" data-content="'.Lang::get('admin/asset_maintenances/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($maintenance->title).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></nobr>';
$actions = '<nobr><a href="'.route('update/asset_maintenance', $maintenance->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/asset_maintenance', $maintenance->id).'" data-content="'.Lang::get('admin/asset_maintenances/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($maintenance->title).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></nobr>';
if (($maintenance->cost) && ($maintenance->asset->assetloc) && ($maintenance->asset->assetloc->currency!='')) {
$maintenance_cost = $maintenance->asset->assetloc->currency.$maintenance->cost;
@@ -107,7 +107,7 @@
'cost' => $maintenance_cost,
'asset_maintenance_type' => e($maintenance->asset_maintenance_type),
'start_date' => $maintenance->start_date,
'time' => $maintenance->asset_maintenance_time,
'asset_maintenance_time' => $maintenance->asset_maintenance_time,
'completion_date' => $maintenance->completion_date,
'actions' => $actions,
'companyName' => is_null($company) ? '' : $company->name
@@ -233,6 +233,16 @@
$assetMaintenance->completion_date = null;
}
if (( $assetMaintenance->completion_date !== "" )
&& ( $assetMaintenance->completion_date !== "0000-00-00" )
&& ( $assetMaintenance->start_date !== "" )
&& ( $assetMaintenance->start_date !== "0000-00-00" )
) {
$startDate = Carbon::parse( $assetMaintenance->start_date );
$completionDate = Carbon::parse( $assetMaintenance->completion_date );
$assetMaintenance->asset_maintenance_time = $completionDate->diffInDays( $startDate );
}
// Was the asset maintenance created?
if ($assetMaintenance->save()) {
+172 -44
View File
@@ -31,7 +31,9 @@ use Paginator;
use Manufacturer; //for embedded-create
use Artisan;
use Symfony\Component\Console\Output\BufferedOutput;
use CustomField;
use Symfony\Component\HttpFoundation\JsonResponse;
use Models;
class AssetsController extends AdminController
@@ -99,9 +101,25 @@ class AssetsController extends AdminController
{
// create a new model instance
$asset = new Asset();
$asset->model()->associate(Model::find(e(Input::get('model_id'))));
//attempt to validate
$validator = Validator::make(Input::all(), $asset->validationRules());
$input=Input::all();
$rules=$asset->validationRules();
if($asset->model->fieldset)
{
foreach($asset->model->fieldset->fields AS $field) {
$input[$field->db_column_name()]=$input['fields'][$field->db_column_name()];
$asset->{$field->db_column_name()}=$input[$field->db_column_name()];
}
$rules+=$asset->model->fieldset->validation_rules();
unset($input['fields']);
}
$validator = Validator::make($input, $rules );
$custom_errors=[];
if ($validator->fails())
{
@@ -160,7 +178,7 @@ class AssetsController extends AdminController
}
$checkModel = Config::get('app.url').'/api/models/'.e(Input::get('model_id')).'/check';
$asset->mac_address = ($checkModel == true) ? e(Input::get('mac_address')) : NULL;
//$asset->mac_address = ($checkModel == true) ? e(Input::get('mac_address')) : NULL;
// Save the asset data
$asset->name = e(Input::get('name'));
@@ -269,8 +287,25 @@ class AssetsController extends AdminController
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
$input=Input::all();
// return "INPUT IS: <pre>".print_r($input,true)."</pre>";
$rules=$asset->validationRules($assetId);
if($asset->model->fieldset)
{
foreach($asset->model->fieldset->fields AS $field) {
$input[$field->db_column_name()]=$input['fields'][$field->db_column_name()];
$asset->{$field->db_column_name()}=$input[$field->db_column_name()];
}
$rules+=$asset->model->fieldset->validation_rules();
unset($input['fields']);
}
//return "Rules: <pre>".print_r($rules,true)."</pre>";
//attempt to validate
$validator = Validator::make(Input::all(), $asset->validationRules($assetId));
$validator = Validator::make($input, $rules );
$custom_errors=[];
if ($validator->fails())
{
@@ -290,7 +325,7 @@ class AssetsController extends AdminController
if (e(Input::get('warranty_months')) == '') {
$asset->warranty_months = NULL;
} else {
$asset->warranty_months = e(Input::get('warranty_months'));
$asset->warranty_months = e(Input::get('warranty_months'));
}
if (e(Input::get('purchase_cost')) == '') {
@@ -324,7 +359,7 @@ class AssetsController extends AdminController
}
$checkModel = Config::get('app.url').'/api/models/'.e(Input::get('model_id')).'/check';
$asset->mac_address = ($checkModel == true) ? e(Input::get('mac_address')) : NULL;
//$asset->mac_address = ($checkModel == true) ? e(Input::get('mac_address')) : NULL;
// Update the asset data
$asset->name = e(Input::get('name'));
@@ -363,6 +398,7 @@ class AssetsController extends AdminController
// Redirect to the asset management page with error
/** @noinspection PhpUnreachableStatementInspection Known to be unreachable but kept following discussion: https://github.com/snipe/snipe-it/pull/1423 */
return Redirect::to("hardware/$assetId/edit")->with('error', Lang::get('admin/hardware/message.update.error'));
}
@@ -464,17 +500,15 @@ class AssetsController extends AdminController
if (Input::get('checkout_at')!= date("Y-m-d")){
$checkout_at = e(Input::get('checkout_at')).' 00:00:00';
$checkout_at = e(Input::get('checkout_at')).' 00:00:00';
} else {
$checkout_at = date("Y-m-d H:i:s");
}
if (Input::has('expected_checkin')) {
if (Input::get('expected_checkin')!= date("Y-m-d")){
$expected_checkin = e(Input::get('expected_checkin'));
}
} else {
$expected_checkin = null;
$expected_checkin = e(Input::get('expected_checkin'));
} else {
$expected_checkin = '';
}
@@ -544,6 +578,8 @@ class AssetsController extends AdminController
$asset->assigned_to = NULL;
$asset->accepted = NULL;
$asset->expected_checkin = NULL;
$asset->last_checkout = NULL;
// Was the asset updated?
if($asset->save()) {
@@ -1056,43 +1092,63 @@ class AssetsController extends AdminController
public function postBulkEdit($assets = null)
{
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
else if (!Input::has('edit_asset')) {
return Redirect::back()->with('error', 'No assets selected');
} else {
$asset_raw_array = Input::get('edit_asset');
foreach ($asset_raw_array as $asset_id => $value) {
$asset_ids[] = $asset_id;
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
} elseif (!Input::has('edit_asset')) {
return Redirect::back()->with('error', 'No assets selected');
}
} else {
$asset_raw_array = Input::get('edit_asset');
foreach ($asset_raw_array as $asset_id => $value) {
$asset_ids[] = $asset_id;
}
}
if (Input::has('bulk_actions')) {
// Create labels
if (Input::get('bulk_actions')=='labels') {
$assets = Asset::find($asset_ids);
$assetcount = count($assets);
$count = 0;
$settings = Setting::getSettings();
if ($settings->qr_code=='1') {
$settings = Setting::getSettings();
return View::make('backend/hardware/labels')->with('assets',$assets)->with('settings',$settings)->with('count',$count);
$assets = Asset::find($asset_ids);
$assetcount = count($assets);
$count = 0;
return View::make('backend/hardware/labels')->with('assets',$assets)->with('settings',$settings)->with('count',$count);
} else {
// QR codes are not enabled
return Redirect::to("hardware")->with('error','Barcodes are not enabled in Admin > Settings');
}
} elseif (Input::get('bulk_actions')=='delete') {
$assets = Asset::with('assigneduser','assetloc')->find($asset_ids);
return View::make('backend/hardware/bulk-delete')->with('assets',$assets);
// Bulk edit
} elseif (Input::get('bulk_actions')=='edit') {
$assets = Input::get('edit_asset');
$supplier_list = array('' => '') + suppliersList();
$statuslabel_list = array('' => '') + statusLabelList();
$location_list = array('' => '') + locationsList();
$models_list = array('' => '') + modelList();
$companies_list = array('' => '') + array('clear' => Lang::get('general.remove_company')) + companyList();
$supplier_list = array('' => '') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
$statuslabel_list = array('' => '') + Statuslabel::lists('name', 'id');
$location_list = array('' => '') + Location::lists('name', 'id');
return View::make('backend/hardware/bulk')->with('assets',$assets)->with('supplier_list',$supplier_list)->with('statuslabel_list',$statuslabel_list)->with('location_list',$location_list);
return View::make('backend/hardware/bulk')
->with('assets',$assets)
->with('supplier_list',$supplier_list)
->with('statuslabel_list',$statuslabel_list)
->with('location_list',$location_list)
->with('models_list',$models_list)
->with('companies_list',$companies_list);
}
@@ -1115,14 +1171,14 @@ class AssetsController extends AdminController
public function postBulkSave($assets = null)
{
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
else if (Input::has('bulk_edit')) {
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
} elseif (Input::has('bulk_edit')) {
$assets = Input::get('bulk_edit');
if ( (Input::has('purchase_date')) || (Input::has('purchase_cost')) || (Input::has('supplier_id')) || (Input::has('order_number')) || (Input::has('warranty_months')) || (Input::has('rtd_location_id')) || (Input::has('requestable')) || (Input::has('status_id')) ) {
if ( (Input::has('purchase_date')) || (Input::has('purchase_cost')) || (Input::has('supplier_id')) || (Input::has('order_number')) || (Input::has('warranty_months')) || (Input::has('rtd_location_id')) || (Input::has('requestable')) || (Input::has('company_id')) || (Input::has('status_id')) || (Input::has('model_id')) ) {
foreach ($assets as $key => $value) {
@@ -1140,6 +1196,19 @@ class AssetsController extends AdminController
$update_array['supplier_id'] = e(Input::get('supplier_id'));
}
if (Input::has('model_id')) {
$update_array['model_id'] = e(Input::get('model_id'));
}
if (Input::has('company_id')) {
if (Input::get('company_id')=="clear") {
$update_array['company_id'] = null;
} else {
$update_array['company_id'] = e(Input::get('company_id'));
}
}
if (Input::has('order_number')) {
$update_array['order_number'] = e(Input::get('order_number'));
}
@@ -1156,11 +1225,11 @@ class AssetsController extends AdminController
$update_array['status_id'] = e(Input::get('status_id'));
}
if (Input::get('requestable')=='1') {
if (Input::get('requestable')=='1') {
$update_array['requestable'] = 1;
} else {
$update_array['requestable'] = 0;
}
$update_array['requestable'] = 0;
}
if (DB::table('assets')
@@ -1197,12 +1266,61 @@ class AssetsController extends AdminController
}
/**
* Save bulk edits
*
* @return View
**/
public function postBulkDelete($assets = null)
{
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
} elseif (Input::has('bulk_edit')) {
//$assets = Input::get('bulk_edit');
$assets = Asset::find(Input::get('bulk_edit'));
//print_r($assets);
foreach ($assets as $asset) {
//echo '<li>'.$asset;
$update_array['deleted_at'] = date('Y-m-d h:i:s');
$update_array['assigned_to'] = NULL;
if (DB::table('assets')
->where('id', $asset->id)
->update($update_array)) {
$logaction = new Actionlog();
$logaction->asset_id = $asset->id;
$logaction->asset_type = 'hardware';
$logaction->created_at = date("Y-m-d H:i:s");
$logaction->user_id = Sentry::getUser()->id;
$log = $logaction->logaction('deleted');
}
} // endforeach
return Redirect::to("hardware")->with('success', Lang::get('admin/hardware/message.delete.success'));
// no values given, nothing to update
} else {
return Redirect::to("hardware")->with('info',Lang::get('admin/hardware/message.delete.nothing_updated'));
}
// Something weird happened here - default to hardware
return Redirect::to("hardware");
}
public function getDatatable($status = null)
{
$assets = Asset::select('assets.*')->with('model','assigneduser','assigneduser.userloc','assetstatus','defaultLoc','assetlog','model','model.category','assetstatus','assetloc', 'company')
$assets = Asset::select('assets.*')->with('model','assigneduser','assigneduser.userloc','assetstatus','defaultLoc','assetlog','model','model.category','model.fieldset','assetstatus','assetloc', 'company')
->Hardware();
if (Input::has('search')) {
@@ -1266,6 +1384,12 @@ class AssetsController extends AdminController
'image',
];
$all_custom_fields=CustomField::all(); //used as a 'cache' of custom fields throughout this page load
foreach($all_custom_fields AS $field) {
$allowed_columns[]=$field->db_column_name();
}
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'asset_tag';
@@ -1315,7 +1439,7 @@ class AssetsController extends AdminController
}
}
$rows[] = array(
$row = array(
'checkbox' =>'<div class="text-center"><input type="checkbox" name="edit_asset['.$asset->id.']" class="one_required"></div>',
'id' => $asset->id,
'image' => (($asset->image) && ($asset->image!='')) ? '<img src="'.Config::get('app.url').'/uploads/assets/'.$asset->image.'" height=50 width=50>' : ((($asset->model) && ($asset->model->image!='')) ? '<img src="'.Config::get('app.url').'/uploads/models/'.$asset->model->image.'" height=40 width=50>' : ''),
@@ -1328,13 +1452,17 @@ class AssetsController extends AdminController
'category' => (($asset->model) && ($asset->model->category)) ? $asset->model->category->name : '',
'eol' => ($asset->eol_date()) ? $asset->eol_date() : '',
'notes' => $asset->notes,
'order_number' => ($asset->order_number!='') ? '<a href="../hardware/?order_number='.$asset->order_number.'">'.$asset->order_number.'</a>' : '',
'order_number' => ($asset->order_number!='') ? '<a href="'.Config::get('app.url').'/hardware?order_number='.$asset->order_number.'">'.$asset->order_number.'</a>' : '',
'last_checkout' => ($asset->last_checkout!='') ? $asset->last_checkout : '',
'expected_checkin' => ($asset->expected_checkin!='') ? $asset->expected_checkin : '',
'change' => ($inout) ? $inout : '',
'actions' => ($actions) ? $actions : '',
'companyName' => is_null($asset->company) ? '' : e($asset->company->name)
);
);
foreach($all_custom_fields AS $field) {
$row[$field->db_column_name()]=$asset->{$field->db_column_name()};
}
$rows[]=$row;
}
$data = array('total'=>$assetCount, 'rows'=>$rows);
@@ -250,12 +250,11 @@ class CategoriesController extends AdminController
foreach ($categories as $category) {
$actions = '<a href="'.route('update/category', $category->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/category', $category->id).'" data-content="'.Lang::get('admin/categories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($category->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
$rows[] = array(
'id' => $category->id,
'name' => link_to('/admin/settings/categories/'.$category->id.'/view', $category->name) ,
'category_type' => ucwords($category->category_type),
'count' => ($category->category_type=='asset') ? $category->assetscount() : $category->accessoriescount(),
'count' => $category->itemCount(),
'acceptance' => ($category->require_acceptance=='1') ? '<i class="fa fa-check"></i>' : '',
//EULA is still not working correctly
'eula' => ($category->getEula()) ? '<i class="fa fa-check"></i>' : '',
@@ -0,0 +1,189 @@
<?php namespace Controllers\Admin;
use View;
use CustomFieldset;
use CustomField;
use Input;
use Validator;
use Redirect;
use Model;
use Lang;
class CustomFieldsController extends \BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
//
return View::make("backend.custom_fields.index")->with("custom_fieldsets",CustomFieldset::all())->with("custom_fields",CustomField::all());
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
return View::make("backend.custom_fields.create");
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
//
$cfset=new CustomFieldset(["name" => Input::get("name")]);
$validator=Validator::make(Input::all(),$cfset->rules);
if($validator->passes()) {
$cfset->save();
return Redirect::route("admin.custom_fields.show",[$cfset->id])->with('success',Lang::get('admin/custom_fields/message.fieldset.create.success'));
} else {
return Redirect::back()->withInput()->withErrors($validator);
}
}
public function associate($id)
{
$set = CustomFieldset::find($id);
foreach($set->fields AS $field) {
if($field->id == Input::get('field_id')) {
return Redirect::route("admin.custom_fields.show",[$id])->withInput()->withErrors(['field_id' => Lang::get('admin/custom_fields/message.field.already_added')]);
}
}
$results=$set->fields()->attach(Input::get('field_id'),["required" => (Input::get('required') == "on"),"order" => Input::get('order')]);
return Redirect::route("admin.custom_fields.show",[$id])->with("success",Lang::get('admin/custom_fields/message.field.create.assoc_success'));
}
public function createField()
{
return View::make("backend.custom_fields.create_field");
}
public function storeField()
{
$field=new CustomField(["name" => Input::get("name"),"element" => Input::get("element")]);
if(!in_array(Input::get('format'),["ALPHA","NUMERIC","MAC","IP"])) {
$field->format=Input::get("custom_format");
} else {
$field->format=Input::get('format');
}
$validator=Validator::make(Input::all(),$field->rules);
if($validator->passes()) {
$results=$field->save();
//return "postCreateField: $results";
if ($results) {
return Redirect::route("admin.custom_fields.index")->with("success",Lang::get('admin/custom_fields/message.field.create.success'));
} else {
return Redirect::back()->withInput()->with('error', Lang::get('admin/custom_fields/message.field.create.error'));
}
} else {
return Redirect::back()->withInput()->withErrors($validator);
}
}
public function deleteField($field_id)
{
$field=CustomField::find($field_id);
if($field->fieldset->count()>0) {
return Redirect::back()->withErrors(['message' => "Field is in-use"]);
} else {
$field->delete();
return Redirect::route("admin.custom_fields.index")->with("success",Lang::get('admin/custom_fields/message.field.delete.success'));
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//$id=$parameters[0];
$cfset=CustomFieldset::find($id);
//print_r($parameters);
//
$custom_fields_list=["" => "Add New Field to Fieldset"] + CustomField::lists("name","id");
// print_r($custom_fields_list);
$maxid=0;
foreach($cfset->fields AS $field) {
// print "Looking for: ".$field->id;
if($field->pivot->order > $maxid) {
$maxid=$field->pivot->order;
}
if(isset($custom_fields_list[$field->id])) {
// print "Found ".$field->id.", so removing it.<br>";
unset($custom_fields_list[$field->id]);
}
}
return View::make("backend.custom_fields.show")->with("custom_fieldset",$cfset)->with("maxid",$maxid+1)->with("custom_fields_list",$custom_fields_list);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
$fieldset=CustomFieldset::find($id);
$models=Model::where("fieldset_id","=",$id);
if($models->count()==0) {
$fieldset->delete();
return Redirect::route("admin.custom_fields.index")->with("success",Lang::get('admin/custom_fields/message.fieldset.delete.success'));
}
else {
return Redirect::route("admin.custom_fields.index")->with("error",Lang::get('admin/custom_fields/message.fieldset.delete.in_use')); //->with("models",$models);
}
}
}
@@ -143,6 +143,7 @@ class LocationsController extends AdminController
}
// Redirect to the location create page
/** @noinspection PhpUnreachableStatementInspection Known to be unreachable but kept following discussion: https://github.com/snipe/snipe-it/pull/1423 */
return Redirect::to('admin/settings/locations/create')->with('error', Lang::get('admin/locations/message.create.error'));
}
+17 -3
View File
@@ -82,7 +82,7 @@ class ModelsController extends AdminController
if ($validator->fails())
{
// The given data did not pass validation
return Redirect::back()->withInput()->with('error', Lang::get('admin/models/message.create.duplicate_set'));;
return Redirect::back()->withInput()->with('error', Lang::get('admin/models/message.create.duplicate_set'));
}
@@ -116,7 +116,11 @@ class ModelsController extends AdminController
$model->manufacturer_id = e(Input::get('manufacturer_id'));
$model->category_id = e(Input::get('category_id'));
$model->user_id = Sentry::getId();
$model->show_mac_address = e(Input::get('show_mac_address', '0'));
if (Input::get('custom_fieldset')!='') {
$model->fieldset_id = e(Input::get('custom_fieldset'));
}
//$model->show_mac_address = e(Input::get('show_mac_address', '0'));
if (Input::file('image')) {
@@ -239,7 +243,9 @@ class ModelsController extends AdminController
$model->modelno = e(Input::get('modelno'));
$model->manufacturer_id = e(Input::get('manufacturer_id'));
$model->category_id = e(Input::get('category_id'));
$model->show_mac_address = e(Input::get('show_mac_address', '0'));
if (Input::get('custom_fieldset')!='') {
$model->fieldset_id = e(Input::get('custom_fieldset'));
}
if (Input::file('image')) {
$image = Input::file('image');
@@ -375,6 +381,14 @@ class ModelsController extends AdminController
}
public function getCustomFields($modelId)
{
$model=Model::find($modelId);
return View::make("backend.models.custom_fields_form")->with("model",$model);
}
/**
* Get the JSON response for the bootstrap table list view
*
+11 -9
View File
@@ -162,7 +162,7 @@ class ReportsController extends AdminController
if (( $asset->assigned_to > 0 ) && ( $asset->assigneduser->location_id > 0 )) {
$location = Location::find( $asset->assigneduser->location_id );
if ($location->name) {
if ($location) {
$row[] = $location->name;
} else {
$row[] = '';
@@ -474,23 +474,25 @@ class ReportsController extends AdminController
}
}
if (e( Input::get( 'location' ) ) == '1') {
if (( $asset->assigned_to > 0 ) && ( $asset->assigneduser->location_id > 0 )) {
$show_loc = '';
if (( $asset->assigned_to > 0 ) && ( $asset->assigneduser->location_id !='' )) {
$location = Location::find( $asset->assigneduser->location_id );
if ($location) {
$row[] = $location->name;
$show_loc .= $location->name;
} else {
$row[] = '';
$show_loc .= 'User location '.$asset->assigneduser->location_id.' is invalid';
}
} elseif ($asset->rtd_location_id) {
} elseif ($asset->rtd_location_id!='') {
$location = Location::find( $asset->rtd_location_id );
if ($location) {
$row[] = $location->name;
$show_loc .= $location->name;
} else {
$row[] = '';
$show_loc .= 'Default location '.$asset->rtd_location_id.' is invalid';
}
} else {
$row[] = ''; // Empty string if location is not set
}
$row[] = $show_loc;
}
if (e( Input::get( 'assigned_to' ) ) == '1') {
if ($asset->assigned_to > 0) {
@@ -155,6 +155,7 @@ class SettingsController extends AdminController
$setting->slack_botname = e(Input::get('slack_botname'));
$setting->ldap_enabled = Input::get('ldap_enabled', '0');
$setting->ldap_server = Input::get('ldap_server');
$setting->ldap_server_cert_ignore = Input::get('ldap_server_cert_ignore', false);
$setting->ldap_uname = Input::get('ldap_uname');
$setting->ldap_pword = Crypt::encrypt(Input::get('ldap_pword'));
$setting->ldap_basedn = Input::get('ldap_basedn');
+18 -3
View File
@@ -536,6 +536,10 @@ class UsersController extends AdminController {
unset($user_raw_array[$key]);
}
if (!Sentry::getUser()->isSuperUser()) {
return Redirect::route('users')->with('error', Lang::get('admin/users/message.insufficient_permissions'));
}
if (!Config::get('app.lock_passwords')) {
$assets = Asset::whereIn('assigned_to', $user_raw_array)->get();
@@ -587,6 +591,7 @@ class UsersController extends AdminController {
return Redirect::route('users')->with('error', 'Bulk delete is not enabled in this installation');
}
/** @noinspection PhpUnreachableStatementInspection Known to be unreachable but kept following discussion: https://github.com/snipe/snipe-it/pull/1423 */
return Redirect::route('users')->with('error', 'An error has occurred');
}
}
@@ -889,8 +894,8 @@ class UsersController extends AdminController {
$sort = e(Input::get('sort'));
}
$users = User::select(array('users.id','users.email','users.username','users.location_id','users.manager_id','users.first_name','users.last_name','users.created_at','users.notes','users.company_id'))
->with('assets','accessories','consumables','licenses','manager','sentryThrottle','groups','userloc','company');
$users = User::select(array('users.id','users.employee_num','users.email','users.username','users.location_id','users.manager_id','users.first_name','users.last_name','users.created_at','users.notes','users.company_id', 'users.deleted_at'))
->with('assets','accessories','consumables','licenses','manager','sentryThrottle','groups','userloc','company');
$users = Company::scopeCompanyables($users);
switch ($status) {
@@ -916,7 +921,7 @@ class UsersController extends AdminController {
default:
$allowed_columns =
[
'last_name','first_name','email','username',
'last_name','first_name','email','username','employee_num',
'assets','accessories', 'consumables','licenses','groups'
];
@@ -972,6 +977,7 @@ class UsersController extends AdminController {
'location' => ($user->userloc) ? $user->userloc->name : '',
'manager' => ($user->manager) ? '<a title="' . $user->manager->fullName() . '" href="users/' . $user->manager->id . '/view">' . $user->manager->fullName() . '</a>' : '',
'assets' => $user->assets->count(),
'employee_num' => $user->employee_num,
'licenses' => $user->licenses->count(),
'accessories' => $user->accessories->count(),
'consumables' => $user->consumables->count(),
@@ -1197,6 +1203,13 @@ class UsersController extends AdminController {
$ldap_result_active_flag = Setting::getSettings()->ldap_active_flag_field;
$ldap_result_emp_num = Setting::getSettings()->ldap_emp_num_field;
$ldap_result_email = Setting::getSettings()->ldap_email_field;
$ldap_server_cert_ignore = Setting::getSettings()->ldap_server_cert_ignore;
// If we are ignoring the SSL cert we need to setup the environment variable
// before we create the connection
if($ldap_server_cert_ignore) {
putenv('LDAPTLS_REQCERT=never');
}
// Connect to LDAP server
$ldapconn = @ldap_connect($url);
@@ -1216,6 +1229,8 @@ class UsersController extends AdminController {
// Binding to ldap server
$ldapbind = @ldap_bind($ldapconn, $username, $password);
Log::error(ldap_errno($ldapconn));
if (!$ldapbind) {
return Redirect::route('users')->with('error', Lang::get('admin/users/message.error.ldap_could_not_bind').ldap_error($ldapconn));
}