Update #42: AD Migration
Refactor to target specific Domain Controllers, with failover.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Interop.ActiveDirectory;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Authorization.Roles;
|
||||
@@ -16,7 +15,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
[DiscoAuthorize(Claims.DiscoAdminAccount)]
|
||||
public partial class AuthorizationRoleController : AuthorizedDatabaseController
|
||||
{
|
||||
|
||||
#region Properties
|
||||
|
||||
const string pName = "name";
|
||||
@@ -111,14 +109,15 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var subjects = Subjects
|
||||
.Where(s => !string.IsNullOrWhiteSpace(s))
|
||||
.Select(s => s.Trim())
|
||||
.Select(s => Tuple.Create(s, ActiveDirectory.RetrieveObject(s, Quick: true)))
|
||||
.Select(s => Tuple.Create(s, ActiveDirectory.RetrieveADObject(s, Quick: true)))
|
||||
.Where(s => s.Item2 is ADUserAccount || s.Item2 is ADGroup)
|
||||
.ToList();
|
||||
var invalidSubjects = subjects.Where(s => s.Item2 == null).ToList();
|
||||
|
||||
if (invalidSubjects.Count > 0)
|
||||
throw new ArgumentException(string.Format("Subjects not found: {0}", string.Join(", ", invalidSubjects)), "Subjects");
|
||||
|
||||
var proposedSubjects = subjects.Select(s => s.Item2.NetBiosId).OrderBy(s => s).ToArray();
|
||||
var proposedSubjects = subjects.Select(s => s.Item2.Id).OrderBy(s => s).ToArray();
|
||||
var currentSubjects = AuthorizationRole.SubjectIds == null ? new string[0] : AuthorizationRole.SubjectIds.Split(',');
|
||||
removedSubjects = currentSubjects.Except(proposedSubjects).ToArray();
|
||||
addedSubjects = proposedSubjects.Except(currentSubjects).ToArray();
|
||||
@@ -249,14 +248,15 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var subjects = Subjects
|
||||
.Where(s => !string.IsNullOrWhiteSpace(s))
|
||||
.Select(s => s.Trim())
|
||||
.Select(s => Tuple.Create(s, ActiveDirectory.RetrieveObject(s, Quick: true)))
|
||||
.Select(s => Tuple.Create(s, ActiveDirectory.RetrieveADObject(s, Quick: true)))
|
||||
.Where(s => s.Item2 is ADUserAccount || s.Item2 is ADGroup)
|
||||
.ToList();
|
||||
var invalidSubjects = subjects.Where(s => s.Item2 == null).ToList();
|
||||
|
||||
if (invalidSubjects.Count > 0)
|
||||
throw new ArgumentException(string.Format("Subjects not found: {0}", string.Join(", ", invalidSubjects)), "Subjects");
|
||||
|
||||
proposedSubjects = subjects.Select(s => s.Item2.NetBiosId).OrderBy(s => s).ToArray();
|
||||
proposedSubjects = subjects.Select(s => s.Item2.Id).OrderBy(s => s).ToArray();
|
||||
var currentSubjects = UserService.AdministratorSubjectIds;
|
||||
removedSubjects = currentSubjects.Except(proposedSubjects).ToArray();
|
||||
addedSubjects = proposedSubjects.Except(currentSubjects).ToArray();
|
||||
@@ -275,31 +275,5 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public virtual ActionResult SearchSubjects(string term)
|
||||
{
|
||||
var groupResults = ActiveDirectory.SearchGroups(term).Cast<IActiveDirectoryObject>();
|
||||
var userResults = ActiveDirectory.SearchUserAccounts(term).Cast<IActiveDirectoryObject>();
|
||||
|
||||
var results = groupResults.Concat(userResults).OrderBy(r => r.SamAccountName)
|
||||
.Select(r => Models.AuthorizationRole.SubjectItem.FromActiveDirectoryObject(r)).ToList();
|
||||
|
||||
return Json(results, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
public virtual ActionResult Subject(string Id)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Id))
|
||||
return Json(null, JsonRequestBehavior.AllowGet);
|
||||
else if (!Id.Contains(@"\"))
|
||||
Id = string.Format(@"{0}\{1}", ActiveDirectory.PrimaryDomain.NetBiosName, Id);
|
||||
|
||||
var subject = ActiveDirectory.RetrieveObject(Id, Quick: true);
|
||||
|
||||
if (subject == null || !(subject is ActiveDirectoryUserAccount || subject is ActiveDirectoryGroup))
|
||||
return Json(null, JsonRequestBehavior.AllowGet);
|
||||
else
|
||||
return Json(Models.AuthorizationRole.SubjectItem.FromActiveDirectoryObject(subject), JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
// Update AD Account
|
||||
if (!string.IsNullOrEmpty(device.DeviceDomainId) && device.DeviceDomainId.Length <= 24)
|
||||
{
|
||||
var adMachineAccount = ActiveDirectory.RetrieveMachineAccount(device.DeviceDomainId);
|
||||
var adMachineAccount = ActiveDirectory.RetrieveADMachineAccount(device.DeviceDomainId);
|
||||
if (adMachineAccount != null)
|
||||
adMachineAccount.SetDescription(device);
|
||||
}
|
||||
@@ -410,7 +410,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var thumbPath = da.RepositoryThumbnailFilename(Database);
|
||||
if (System.IO.File.Exists(thumbPath))
|
||||
{
|
||||
if (thumbPath.EndsWith(".png", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (thumbPath.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
|
||||
return File(thumbPath, "image/png");
|
||||
else
|
||||
return File(thumbPath, "image/jpg");
|
||||
@@ -433,7 +433,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
if (file.ContentLength > 0)
|
||||
{
|
||||
var contentType = file.ContentType;
|
||||
if (string.IsNullOrEmpty(contentType) || contentType.Equals("unknown/unknown", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (string.IsNullOrEmpty(contentType) || contentType.Equals("unknown/unknown", StringComparison.OrdinalIgnoreCase))
|
||||
contentType = BI.Interop.MimeTypes.ResolveMimeType(file.FileName);
|
||||
|
||||
var da = new Disco.Models.Repository.DeviceAttachment()
|
||||
@@ -501,7 +501,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var da = Database.DeviceAttachments.Include("TechUser").Where(m => m.Id == id).FirstOrDefault();
|
||||
if (da != null)
|
||||
{
|
||||
if (da.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (da.TechUserId.Equals(CurrentUser.UserId, StringComparison.OrdinalIgnoreCase))
|
||||
Authorization.RequireAny(Claims.Device.Actions.RemoveAnyAttachments, Claims.Device.Actions.RemoveOwnAttachments);
|
||||
else
|
||||
Authorization.Require(Claims.Device.Actions.RemoveAnyAttachments);
|
||||
|
||||
@@ -246,7 +246,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateOrganisationalUnit(Disco.Models.Repository.DeviceProfile deviceProfile, string OrganisationalUnit)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(OrganisationalUnit))
|
||||
OrganisationalUnit = ActiveDirectory.PrimaryDomain.GetDefaultComputerContainer();
|
||||
OrganisationalUnit = ActiveDirectory.Context.PrimaryDomain.DefaultComputerContainer;
|
||||
|
||||
if (OrganisationalUnit != deviceProfile.OrganisationalUnit)
|
||||
{
|
||||
|
||||
@@ -531,7 +531,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
// Enforce Restricted List Mode
|
||||
var value = DeviceHeldLocation.Trim();
|
||||
|
||||
if (!Database.DiscoConfiguration.JobPreferences.LocationList.Contains(value, StringComparer.InvariantCultureIgnoreCase))
|
||||
if (!Database.DiscoConfiguration.JobPreferences.LocationList.Contains(value, StringComparer.OrdinalIgnoreCase))
|
||||
throw new ArgumentException("The location was not found in the list (Mode: Restricted List)");
|
||||
}
|
||||
|
||||
@@ -545,7 +545,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateFlags(Job job, string Flags)
|
||||
{
|
||||
// Only User Management Job Supports Flags at the moment
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.UMgmt, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.UMgmt, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for User Management Jobs");
|
||||
}
|
||||
@@ -602,7 +602,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateNonWarrantyIsInsuranceClaim(Job job, string IsInsuranceClaim)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -641,7 +641,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private Models.Job._DateChangeModel UpdateNonWarrantyAccountingChargeRequired(Job job, string AccountingChargeRequiredDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -675,7 +675,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private Models.Job._DateChangeModel UpdateNonWarrantyAccountingChargeAdded(Job job, string AccountingChargeAddedDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -709,7 +709,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private Models.Job._DateChangeModel UpdateNonWarrantyAccountingChargePaid(Job job, string AccountingChargePaidDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -743,7 +743,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private Models.Job._DateChangeModel UpdateNonWarrantyPurchaseOrderRaised(Job job, string PurchaseOrderRaisedDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -786,7 +786,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private Models.Job._DateChangeModel UpdateNonWarrantyPurchaseOrderSent(Job job, string PurchaseOrderSentDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -820,7 +820,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private Models.Job._DateChangeModel UpdateNonWarrantyInvoiceReceived(Job job, string InvoiceReceivedDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -855,7 +855,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateNonWarrantyRepairerName(Job job, string RepairerName)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -873,7 +873,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateNonWarrantyRepairerLoggedDate(Job job, string RepairerLoggedDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -884,7 +884,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (RepairerLoggedDate.Equals("Now", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (RepairerLoggedDate.Equals("Now", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
job.JobMetaNonWarranty.RepairerLoggedDate = DateTime.Now;
|
||||
}
|
||||
@@ -906,7 +906,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateNonWarrantyRepairerReference(Job job, string RepairerReference)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -924,7 +924,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateNonWarrantyRepairerCompletedDate(Job job, string RepairerCompletedDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -935,7 +935,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (RepairerCompletedDate.Equals("Now", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (RepairerCompletedDate.Equals("Now", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
job.JobMetaNonWarranty.RepairerCompletedDate = DateTime.Now;
|
||||
}
|
||||
@@ -962,7 +962,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private Models.Job._DateChangeModel UpdateInsuranceClaimFormSentDate(Job job, string ClaimFormSentDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -973,7 +973,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ClaimFormSentDate.Equals("Now", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (ClaimFormSentDate.Equals("Now", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
job.JobMetaInsurance.ClaimFormSentDate = DateTime.Now;
|
||||
}
|
||||
@@ -1004,7 +1004,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceDateOfPurchase(Job job, string DateOfPurchase)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1028,7 +1028,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceOtherInterestedParties(Job job, string OtherInterestedParties)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1047,7 +1047,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceRecoverReduceAction(Job job, string RecoverReduceAction)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1066,7 +1066,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsurancePoliceNotifiedCrimeReportNo(Job job, string PoliceNotifiedCrimeReportNo)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1085,7 +1085,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsurancePoliceNotifiedDate(Job job, string PoliceNotifiedDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1109,7 +1109,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsurancePoliceNotifiedStation(Job job, string PoliceNotifiedStation)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1128,7 +1128,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsurancePoliceNotified(Job job, string PoliceNotified)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1146,7 +1146,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsurancePropertyLastSeenDate(Job job, string PropertyLastSeenDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1173,7 +1173,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceBurglaryTheftMethodOfEntry(Job job, string BurglaryTheftMethodOfEntry)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1192,7 +1192,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceWitnessesNamesAddresses(Job job, string WitnessesNamesAddresses)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1211,7 +1211,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceThirdPartyCausedWhy(Job job, string ThirdPartyCausedWhy)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1230,7 +1230,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceThirdPartyCausedName(Job job, string ThirdPartyCausedName)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1249,7 +1249,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceThirdPartyCaused(Job job, string ThirdPartyCaused)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1267,7 +1267,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceDescription(Job job, string Description)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1286,7 +1286,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceEventLocation(Job job, string EventLocation)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1305,7 +1305,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateInsuranceLossOrDamageDate(Job job, string LossOrDamageDate)
|
||||
{
|
||||
// Validate Is NonWarranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HNWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware NonWarranty Jobs");
|
||||
}
|
||||
@@ -1334,7 +1334,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateWarrantyExternalName(Job job, string ExternalName)
|
||||
{
|
||||
// Validate Is Warranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware Warranty Jobs");
|
||||
}
|
||||
@@ -1353,7 +1353,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateWarrantyExternalLoggedDate(Job job, string ExternalLoggedDate)
|
||||
{
|
||||
// Validate Is Warranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware Warranty Jobs");
|
||||
}
|
||||
@@ -1380,7 +1380,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateWarrantyExternalReference(Job job, string ExternalReference)
|
||||
{
|
||||
// Validate Is Warranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware Warranty Jobs");
|
||||
}
|
||||
@@ -1399,7 +1399,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
private void UpdateWarrantyExternalCompletedDate(Job job, string ExternalCompletedDate)
|
||||
{
|
||||
// Validate Is Warranty Job
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (!job.JobTypeId.Equals(JobType.JobTypeIds.HWar, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new Exception("This property can only be set for Hardware Warranty Jobs");
|
||||
}
|
||||
@@ -1410,7 +1410,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ExternalCompletedDate.Equals("Now", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (ExternalCompletedDate.Equals("Now", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
job.JobMetaWarranty.ExternalCompletedDate = DateTime.Now;
|
||||
}
|
||||
@@ -1876,7 +1876,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var jl = Database.JobLogs.Find(id);
|
||||
if (jl != null)
|
||||
{
|
||||
if (jl.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (jl.TechUserId.Equals(CurrentUser.UserId, StringComparison.OrdinalIgnoreCase))
|
||||
Authorization.RequireAny(Claims.Job.Actions.RemoveAnyLogs, Claims.Job.Actions.RemoveOwnLogs);
|
||||
else
|
||||
Authorization.Require(Claims.Job.Actions.RemoveAnyLogs);
|
||||
@@ -1921,7 +1921,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var thumbFileInfo = new FileInfo(thumbPath);
|
||||
if (thumbFileInfo.Exists && thumbFileInfo.Length > 0)
|
||||
{
|
||||
if (thumbPath.EndsWith(".png", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (thumbPath.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
|
||||
return File(thumbPath, "image/png");
|
||||
else
|
||||
return File(thumbPath, "image/jpg");
|
||||
@@ -1944,7 +1944,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
if (file.ContentLength > 0)
|
||||
{
|
||||
var contentType = file.ContentType;
|
||||
if (string.IsNullOrEmpty(contentType) || contentType.Equals("unknown/unknown", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (string.IsNullOrEmpty(contentType) || contentType.Equals("unknown/unknown", StringComparison.OrdinalIgnoreCase))
|
||||
contentType = BI.Interop.MimeTypes.ResolveMimeType(file.FileName);
|
||||
|
||||
var ja = new Disco.Models.Repository.JobAttachment()
|
||||
@@ -2012,7 +2012,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var ja = Database.JobAttachments.Include("TechUser").Where(m => m.Id == id).FirstOrDefault();
|
||||
if (ja != null)
|
||||
{
|
||||
if (ja.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (ja.TechUserId.Equals(CurrentUser.UserId, StringComparison.OrdinalIgnoreCase))
|
||||
Authorization.RequireAny(Claims.Job.Actions.RemoveAnyAttachments, Claims.Job.Actions.RemoveOwnAttachments);
|
||||
else
|
||||
Authorization.Require(Claims.Job.Actions.RemoveAnyAttachments);
|
||||
@@ -2148,7 +2148,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
{
|
||||
case Disco.Models.BI.Job.LocationModes.Unrestricted:
|
||||
var jobDateThreshold = DateTime.Now.AddYears(-1);
|
||||
locations = Database.Jobs.Where(j => (j.OpenedDate > jobDateThreshold || !j.ClosedDate.HasValue) && j.DeviceHeldLocation != null).Select(j => j.DeviceHeldLocation).Distinct().OrderBy(l => l).ToList().Where(l => !string.IsNullOrWhiteSpace(l)).Select(l => l.Trim()).Distinct(StringComparer.InvariantCultureIgnoreCase).OrderBy(l => l).ToList();
|
||||
locations = Database.Jobs.Where(j => (j.OpenedDate > jobDateThreshold || !j.ClosedDate.HasValue) && j.DeviceHeldLocation != null).Select(j => j.DeviceHeldLocation).Distinct().OrderBy(l => l).ToList().Where(l => !string.IsNullOrWhiteSpace(l)).Select(l => l.Trim()).Distinct(StringComparer.OrdinalIgnoreCase).OrderBy(l => l).ToList();
|
||||
break;
|
||||
case Disco.Models.BI.Job.LocationModes.OptionalList:
|
||||
case Disco.Models.BI.Job.LocationModes.RestrictedList:
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var list = LocationList
|
||||
.Where(i => !string.IsNullOrWhiteSpace(i))
|
||||
.Select(i => i.Trim())
|
||||
.Distinct(StringComparer.InvariantCultureIgnoreCase)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.OrderBy(i => i);
|
||||
|
||||
Database.DiscoConfiguration.JobPreferences.LocationList = list.ToList();
|
||||
@@ -93,7 +93,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
list = list
|
||||
.Where(l => !string.IsNullOrWhiteSpace(l))
|
||||
.Select(l => l.Trim())
|
||||
.Distinct(StringComparer.InvariantCultureIgnoreCase)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.OrderBy(i => i);
|
||||
|
||||
Database.DiscoConfiguration.JobPreferences.LocationList = list.ToList();
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Disco.Models.Interop.ActiveDirectory;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Jobs.JobQueues;
|
||||
using Disco.Services.Web;
|
||||
@@ -291,14 +290,15 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var subjects = Subjects
|
||||
.Where(s => !string.IsNullOrWhiteSpace(s))
|
||||
.Select(s => s.Trim())
|
||||
.Select(s => Tuple.Create(s, ActiveDirectory.RetrieveObject(s, Quick: true)))
|
||||
.Select(s => Tuple.Create(s, ActiveDirectory.RetrieveADObject(s, Quick: true)))
|
||||
.Where(s => s.Item2 is ADUserAccount || s.Item2 is ADGroup)
|
||||
.ToList();
|
||||
var invalidSubjects = subjects.Where(s => s.Item2 == null).ToList();
|
||||
|
||||
if (invalidSubjects.Count > 0)
|
||||
throw new ArgumentException(string.Format("Subjects not found: {0}", string.Join(", ", invalidSubjects)), "Subjects");
|
||||
|
||||
var proposedSubjects = subjects.Select(s => s.Item2.NetBiosId).OrderBy(s => s).ToArray();
|
||||
var proposedSubjects = subjects.Select(s => s.Item2.Id).OrderBy(s => s).ToArray();
|
||||
|
||||
subjectIds = string.Join(",", proposedSubjects);
|
||||
|
||||
@@ -370,28 +370,5 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
[DiscoAuthorize(Claims.Config.JobQueue.Configure)]
|
||||
public virtual ActionResult SearchSubjects(string term)
|
||||
{
|
||||
var groupResults = ActiveDirectory.SearchGroups(term).Cast<IActiveDirectoryObject>();
|
||||
var userResults = ActiveDirectory.SearchUserAccounts(term).Cast<IActiveDirectoryObject>();
|
||||
|
||||
var results = groupResults.Concat(userResults).OrderBy(r => r.SamAccountName)
|
||||
.Select(r => Models.JobQueue.SubjectItem.FromActiveDirectoryObject(r)).ToList();
|
||||
|
||||
return Json(results, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.JobQueue.Configure)]
|
||||
public virtual ActionResult Subject(string Id)
|
||||
{
|
||||
var subject = ActiveDirectory.RetrieveObject(Id, Quick: true);
|
||||
|
||||
if (subject == null || !(subject is ActiveDirectoryUserAccount || subject is ActiveDirectoryGroup))
|
||||
return Json(null, JsonRequestBehavior.AllowGet);
|
||||
else
|
||||
return Json(Models.JobQueue.SubjectItem.FromActiveDirectoryObject(subject), JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Data.Configuration;
|
||||
using Disco.Models.Interop.ActiveDirectory;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Interop.ActiveDirectory;
|
||||
using Disco.Services.Web;
|
||||
@@ -20,7 +19,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
[DiscoAuthorize(Claims.Config.System.Show)]
|
||||
public virtual ActionResult UpdateLastNetworkLogonDates()
|
||||
{
|
||||
var taskStatus = Disco.Services.Interop.ActiveDirectory.Internal.ADUpdateLastNetworkLogonDateJob.ScheduleImmediately();
|
||||
var taskStatus = Disco.Services.Interop.ActiveDirectory.ADTaskUpdateNetworkLogonDates.ScheduleImmediately();
|
||||
|
||||
return RedirectToAction(MVC.Config.Logging.TaskStatus(taskStatus.SessionId));
|
||||
}
|
||||
@@ -126,7 +125,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
if (Image != null && Image.ContentLength > 0)
|
||||
{
|
||||
if (Image.ContentType.StartsWith("image/", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (Image.ContentType.StartsWith("image/", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
Database.DiscoConfiguration.OrganisationLogo = Image.InputStream;
|
||||
|
||||
@@ -227,7 +226,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
[DiscoAuthorize(Claims.Config.System.ConfigureActiveDirectory)]
|
||||
public virtual ActionResult UpdateActiveDirectorySearchScope(List<string> Containers, bool redirect = false)
|
||||
{
|
||||
ActiveDirectory.UpdateSearchContainers(Database, Containers);
|
||||
ActiveDirectory.Context.UpdateSearchContainers(Database, Containers);
|
||||
Database.SaveChanges();
|
||||
|
||||
if (redirect)
|
||||
@@ -237,17 +236,17 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.System.ConfigureActiveDirectory)]
|
||||
public virtual ActionResult UpdateActiveDirectorySearchEntireForest(bool SearchEntireForest, bool redirect = false)
|
||||
public virtual ActionResult UpdateActiveDirectorySearchAllForestServers(bool SearchAllForestServers, bool redirect = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = ActiveDirectory.UpdateSearchEntireForest(Database, SearchEntireForest);
|
||||
var result = ActiveDirectory.Context.UpdateSearchAllForestServers(Database, SearchAllForestServers);
|
||||
|
||||
Database.SaveChanges();
|
||||
|
||||
if (!result)
|
||||
{
|
||||
var forestServers = ActiveDirectory.LoadForestServers();
|
||||
var forestServers = ActiveDirectory.Context.ForestServers;
|
||||
if (forestServers.Count > ActiveDirectory.MaxForestServerSearch)
|
||||
throw new InvalidOperationException(string.Format("This forest contains more than the Max Forest Server Search restriction ({0})", ActiveDirectory.MaxForestServerSearch));
|
||||
else
|
||||
@@ -271,8 +270,8 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
[DiscoAuthorizeAny(Claims.Config.System.ConfigureActiveDirectory, Claims.Config.DeviceProfile.Configure)]
|
||||
public virtual ActionResult DomainOrganisationalUnits()
|
||||
{
|
||||
var domainOUs = ActiveDirectory.Domains
|
||||
.Select(d => new Models.System.DomainOrganisationalUnitsModel() { Domain = d, OrganisationalUnits = ActiveDirectory.RetrieveOrganisationalUnitStructure(d) })
|
||||
var domainOUs = ActiveDirectory.RetrieveADOrganisationalUnitStructure()
|
||||
.Select(d => new Models.System.DomainOrganisationalUnitsModel() { Domain = d.Item1, OrganisationalUnits = d.Item2})
|
||||
.Select(ous => ous.ToFancyTreeNode()).ToList();
|
||||
|
||||
return new JsonResult()
|
||||
@@ -283,6 +282,29 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
};
|
||||
}
|
||||
|
||||
[DiscoAuthorizeAny(Claims.DiscoAdminAccount, Claims.Config.JobQueue.Configure)]
|
||||
public virtual ActionResult SearchSubjects(string term)
|
||||
{
|
||||
var groupResults = ActiveDirectory.SearchADGroups(term).Cast<IADObject>();
|
||||
var userResults = ActiveDirectory.SearchADUserAccounts(term, true).Cast<IADObject>();
|
||||
|
||||
var results = groupResults.Concat(userResults).OrderBy(r => r.SamAccountName)
|
||||
.Select(r => Models.Shared.SubjectDescriptorModel.FromActiveDirectoryObject(r)).ToList();
|
||||
|
||||
return Json(results, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
[DiscoAuthorizeAny(Claims.DiscoAdminAccount, Claims.Config.JobQueue.Configure)]
|
||||
public virtual ActionResult Subject(string Id)
|
||||
{
|
||||
var subject = ActiveDirectory.RetrieveADObject(Id, Quick: true);
|
||||
|
||||
if (subject == null)
|
||||
return Json(null, JsonRequestBehavior.AllowGet);
|
||||
else
|
||||
return Json(Models.Shared.SubjectDescriptorModel.FromActiveDirectoryObject(subject), JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Proxy Settings
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var thumbPath = ua.RepositoryThumbnailFilename(Database);
|
||||
if (System.IO.File.Exists(thumbPath))
|
||||
{
|
||||
if (thumbPath.EndsWith(".png", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (thumbPath.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
|
||||
return File(thumbPath, "image/png");
|
||||
else
|
||||
return File(thumbPath, "image/jpg");
|
||||
@@ -65,7 +65,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
public virtual ActionResult AttachmentUpload(string id, string Domain, string Comments)
|
||||
{
|
||||
if (string.IsNullOrEmpty(Domain))
|
||||
id = ActiveDirectory.PrimaryDomain.NetBiosName + @"\" + id;
|
||||
id = ActiveDirectory.Context.PrimaryDomain.NetBiosName + @"\" + id;
|
||||
else
|
||||
id = Domain + @"\" + id;
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
if (file.ContentLength > 0)
|
||||
{
|
||||
var contentType = file.ContentType;
|
||||
if (string.IsNullOrEmpty(contentType) || contentType.Equals("unknown/unknown", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (string.IsNullOrEmpty(contentType) || contentType.Equals("unknown/unknown", StringComparison.OrdinalIgnoreCase))
|
||||
contentType = BI.Interop.MimeTypes.ResolveMimeType(file.FileName);
|
||||
|
||||
var ua = new Disco.Models.Repository.UserAttachment()
|
||||
@@ -127,7 +127,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
public virtual ActionResult Attachments(string id, string Domain)
|
||||
{
|
||||
if (string.IsNullOrEmpty(Domain))
|
||||
id = ActiveDirectory.PrimaryDomain.NetBiosName + @"\" + id;
|
||||
id = ActiveDirectory.Context.PrimaryDomain.NetBiosName + @"\" + id;
|
||||
else
|
||||
id = Domain + @"\" + id;
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
var ua = Database.UserAttachments.Include("TechUser").Where(m => m.Id == id).FirstOrDefault();
|
||||
if (ua != null)
|
||||
{
|
||||
if (ua.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (ua.TechUserId.Equals(CurrentUser.UserId, StringComparison.OrdinalIgnoreCase))
|
||||
Authorization.RequireAny(Claims.User.Actions.RemoveAnyAttachments, Claims.User.Actions.RemoveOwnAttachments);
|
||||
else
|
||||
Authorization.Require(Claims.User.Actions.RemoveAnyAttachments);
|
||||
@@ -174,7 +174,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
throw new ArgumentNullException("AttachmentTypeId");
|
||||
|
||||
if (string.IsNullOrEmpty(Domain))
|
||||
id = ActiveDirectory.PrimaryDomain.NetBiosName + @"\" + id;
|
||||
id = ActiveDirectory.Context.PrimaryDomain.NetBiosName + @"\" + id;
|
||||
else
|
||||
id = Domain + @"\" + id;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user