Feature #42: Active Directory Interop Upgrade

AD Interop moved to Disco.Services; Supports multi-domain environments,
sites, and searching restricted with OUs.
This commit is contained in:
Gary Sharp
2014-04-10 17:58:04 +10:00
parent b841c6b2c0
commit db73cc1a12
218 changed files with 6383 additions and 2535 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
+3 -3
View File
@@ -2,11 +2,11 @@
@using Disco;
@using Disco.BI.Extensions;
@using Disco.Models.Repository;
@using Disco.Services;
@using Disco.Services.Web;
@using Disco.Web;
@using System.Web.Mvc
@using System.Web.Mvc.Html;
@using Disco.Services.Web;
@helper FriendlyDate(DateTime d, string ElementId = null, bool WithoutSuffix = false)
{<span @(ElementId == null ? null : new HtmlString(string.Format("id=\"{0}\" ", ElementId)))title="@d.ToFullDateTime()" data-livestamp="@d.ToUnixEpoc()" data-isodate="@d.ToISO8601()" class="date nowrap@(WithoutSuffix ? " noMomentSuffix" : null)">@d.ToFullDateTime()</span>}
@@ -34,7 +34,7 @@
{
if (u != null)
{
@prepend <span title="@u">@u.Id</span>
@prepend <span title="@u">@u.FriendlyId()</span>
}
else
{
+12 -6
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -20,13 +20,13 @@ namespace Disco.Web
using System.Web;
using System.Web.Helpers;
#line 6 "..\..\App_Code\CommonHelpers.cshtml"
#line 8 "..\..\App_Code\CommonHelpers.cshtml"
using System.Web.Mvc;
#line default
#line hidden
#line 7 "..\..\App_Code\CommonHelpers.cshtml"
#line 9 "..\..\App_Code\CommonHelpers.cshtml"
using System.Web.Mvc.Html;
#line default
@@ -54,13 +54,19 @@ namespace Disco.Web
#line default
#line hidden
#line 8 "..\..\App_Code\CommonHelpers.cshtml"
#line 5 "..\..\App_Code\CommonHelpers.cshtml"
using Disco.Services;
#line default
#line hidden
#line 6 "..\..\App_Code\CommonHelpers.cshtml"
using Disco.Services.Web;
#line default
#line hidden
#line 5 "..\..\App_Code\CommonHelpers.cshtml"
#line 7 "..\..\App_Code\CommonHelpers.cshtml"
using Disco.Web;
#line default
@@ -509,7 +515,7 @@ WriteLiteralTo(@__razor_helper_writer, "\">");
#line 37 "..\..\App_Code\CommonHelpers.cshtml"
WriteTo(@__razor_helper_writer, u.Id);
WriteTo(@__razor_helper_writer, u.FriendlyId());
#line default
#line hidden
+6 -10
View File
@@ -1,10 +1,7 @@
using System;
using System.Collections.Generic;
using Disco.Data.Repository;
using System;
using System.Linq;
using System.Web;
using Disco.Data.Repository;
using System.Threading;
using System.Reflection;
namespace Disco.Web
{
@@ -32,6 +29,9 @@ namespace Disco.Web
// Initialize Logging
Disco.Services.Logging.LogContext.Initalize(Database, DiscoApplication.SchedulerFactory);
// Initialize Active Directory Interop
Disco.Services.Interop.ActiveDirectory.ActiveDirectory.Initialize(Database);
// Load Organisation Name
DiscoApplication.OrganisationName = Database.DiscoConfiguration.OrganisationName;
DiscoApplication.MultiSiteMode = Database.DiscoConfiguration.MultiSiteMode;
@@ -43,11 +43,7 @@ namespace Disco.Web
Database.DiscoConfiguration.ProxyPassword);
// Initialize User Service Interop
Disco.Services.Users.UserService.Initialize(Database,
(UserId, AdditionalProperties) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetUserAccount(UserId, AdditionalProperties),
(UserId, AdditionalProperties) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetMachineAccount(UserId, null, null, AdditionalProperties),
(Term) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.SearchUsers(Term));
Disco.Services.Users.UserService.Initialize(Database);
}
public static void InitalizeNormalEnvironment(DiscoDataContext Database)
@@ -1,9 +1,9 @@
using Disco.BI.Extensions;
using Disco.BI.Interop.ActiveDirectory;
using Disco.Models.Interop.ActiveDirectory;
using Disco.Models.Repository;
using Disco.Services.Authorization;
using Disco.Services.Authorization.Roles;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Users;
using Disco.Services.Web;
using System;
@@ -75,7 +75,7 @@ namespace Disco.Web.Areas.API.Controllers
var oldRoleName = AuthorizationRole.Name;
AuthorizationRole.Name = Name;
UserService.UpdateAuthorizationRole(Database, AuthorizationRole);
AuthorizationLog.LogRoleConfiguredRenamed(AuthorizationRole, CurrentUser.Id, oldRoleName);
AuthorizationLog.LogRoleConfiguredRenamed(AuthorizationRole, CurrentUser.UserId, oldRoleName);
}
}
}
@@ -93,9 +93,9 @@ namespace Disco.Web.Areas.API.Controllers
UserService.UpdateAuthorizationRole(Database, AuthorizationRole);
if (removedClaims.Length > 0)
AuthorizationLog.LogRoleConfiguredClaimsRemoved(AuthorizationRole, CurrentUser.Id, removedClaims);
AuthorizationLog.LogRoleConfiguredClaimsRemoved(AuthorizationRole, CurrentUser.UserId, removedClaims);
if (addedClaims.Length > 0)
AuthorizationLog.LogRoleConfiguredClaimsAdded(AuthorizationRole, CurrentUser.Id, addedClaims);
AuthorizationLog.LogRoleConfiguredClaimsAdded(AuthorizationRole, CurrentUser.UserId, addedClaims);
}
private void UpdateSubjects(AuthorizationRole AuthorizationRole, string[] Subjects)
@@ -107,7 +107,7 @@ namespace Disco.Web.Areas.API.Controllers
// Validate Subjects
if (Subjects != null && Subjects.Length > 0)
{
var subjects = Subjects.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()).Select(s => new Tuple<string, IActiveDirectoryObject>(s, ActiveDirectory.GetObject(s))).ToList();
var subjects = Subjects.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()).Select(s => new Tuple<string, IActiveDirectoryObject>(s, ActiveDirectory.RetrieveObject(s))).ToList();
var invalidSubjects = subjects.Where(s => s.Item2 == null).ToList();
if (invalidSubjects.Count > 0)
@@ -130,9 +130,9 @@ namespace Disco.Web.Areas.API.Controllers
UserService.UpdateAuthorizationRole(Database, AuthorizationRole);
if (removedSubjects != null && removedSubjects.Length > 0)
AuthorizationLog.LogRoleConfiguredSubjectsRemoved(AuthorizationRole, CurrentUser.Id, removedSubjects);
AuthorizationLog.LogRoleConfiguredSubjectsRemoved(AuthorizationRole, CurrentUser.UserId, removedSubjects);
if (addedSubjects != null && addedSubjects.Length > 0)
AuthorizationLog.LogRoleConfiguredSubjectsAdded(AuthorizationRole, CurrentUser.Id, addedSubjects);
AuthorizationLog.LogRoleConfiguredSubjectsAdded(AuthorizationRole, CurrentUser.UserId, addedSubjects);
}
}
@@ -234,8 +234,8 @@ namespace Disco.Web.Areas.API.Controllers
public virtual ActionResult SearchSubjects(string term)
{
var groupResults = BI.Interop.ActiveDirectory.ActiveDirectory.SearchGroups(term).Cast<IActiveDirectoryObject>();
var userResults = BI.Interop.ActiveDirectory.ActiveDirectory.SearchUsers(term).Cast<IActiveDirectoryObject>();
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();
@@ -245,7 +245,7 @@ namespace Disco.Web.Areas.API.Controllers
public virtual ActionResult Subject(string Id)
{
var subject = ActiveDirectory.GetObject(Id);
var subject = ActiveDirectory.RetrieveObject(Id);
if (subject == null || !(subject is ActiveDirectoryUserAccount || subject is ActiveDirectoryGroup))
return Json(null, JsonRequestBehavior.AllowGet);
@@ -1,6 +1,6 @@
using Disco.BI.Extensions;
using Disco.BI.Interop.ActiveDirectory;
using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Users;
using Disco.Services.Web;
using System;
@@ -148,9 +148,9 @@ namespace Disco.Web.Areas.API.Controllers
device.DeviceProfile = p;
// Update AD Account
if (!string.IsNullOrEmpty(device.ComputerName) && device.ComputerName.Length <= 24)
if (!string.IsNullOrEmpty(device.DeviceDomainId) && device.DeviceDomainId.Length <= 24)
{
var adMachineAccount = ActiveDirectory.GetMachineAccount(device.ComputerName);
var adMachineAccount = ActiveDirectory.RetrieveMachineAccount(device.DeviceDomainId);
if (adMachineAccount != null)
adMachineAccount.SetDescription(device);
}
@@ -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.Id, StringComparison.InvariantCultureIgnoreCase))
if (da.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
Authorization.RequireAny(Claims.Device.Actions.RemoveAnyAttachments, Claims.Device.Actions.RemoveOwnAttachments);
else
Authorization.Require(Claims.Device.Actions.RemoveAnyAttachments);
@@ -1,6 +1,7 @@
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Web;
using System;
using System.Linq;
@@ -90,7 +91,7 @@ namespace Disco.Web.Areas.API.Controllers
throw new Exception("Invalid Device Profile Number");
}
if (redirect.HasValue && redirect.Value)
return RedirectToAction(MVC.Config.DeviceModel.Index(deviceProfile.Id));
return RedirectToAction(MVC.Config.DeviceProfile.Index(deviceProfile.Id));
else
return Json("OK", JsonRequestBehavior.AllowGet);
}
@@ -245,11 +246,13 @@ namespace Disco.Web.Areas.API.Controllers
private void UpdateOrganisationalUnit(Disco.Models.Repository.DeviceProfile deviceProfile, string OrganisationalUnit)
{
if (string.IsNullOrWhiteSpace(OrganisationalUnit))
OrganisationalUnit = null;
OrganisationalUnit = ActiveDirectory.PrimaryDomain.GetDefaultComputerContainer();
deviceProfile.OrganisationalUnit = OrganisationalUnit;
Database.SaveChanges();
if (OrganisationalUnit != deviceProfile.OrganisationalUnit)
{
deviceProfile.OrganisationalUnit = OrganisationalUnit;
Database.SaveChanges();
}
}
private void UpdateComputerNameTemplate(Disco.Models.Repository.DeviceProfile deviceProfile, string ComputerNameTemplate)
@@ -364,13 +367,6 @@ namespace Disco.Web.Areas.API.Controllers
}
#endregion
[DiscoAuthorize(Claims.Config.DeviceProfile.Configure)]
public virtual ActionResult OrganisationalUnits()
{
var OUs = BI.Interop.ActiveDirectory.ActiveDirectory.GetOrganisationalUnitStructure();
return Json(OUs, JsonRequestBehavior.AllowGet);
}
#region Actions
[DiscoAuthorize(Claims.Config.DeviceProfile.Delete)]
@@ -663,7 +663,7 @@ namespace Disco.Web.Areas.API.Controllers
throw new Exception("Invalid Date Format");
}
}
job.JobMetaNonWarranty.AccountingChargeRequiredUserId = CurrentUser.Id;
job.JobMetaNonWarranty.AccountingChargeRequiredUserId = CurrentUser.UserId;
Database.SaveChanges();
return new Models.Job._DateChangeModel()
{
@@ -697,7 +697,7 @@ namespace Disco.Web.Areas.API.Controllers
throw new Exception("Invalid Date Format");
}
}
job.JobMetaNonWarranty.AccountingChargeAddedUserId = CurrentUser.Id;
job.JobMetaNonWarranty.AccountingChargeAddedUserId = CurrentUser.UserId;
Database.SaveChanges();
return new Models.Job._DateChangeModel()
{
@@ -731,7 +731,7 @@ namespace Disco.Web.Areas.API.Controllers
throw new Exception("Invalid Date Format");
}
}
job.JobMetaNonWarranty.AccountingChargePaidUserId = CurrentUser.Id;
job.JobMetaNonWarranty.AccountingChargePaidUserId = CurrentUser.UserId;
Database.SaveChanges();
return new Models.Job._DateChangeModel()
{
@@ -765,7 +765,7 @@ namespace Disco.Web.Areas.API.Controllers
throw new Exception("Invalid Date Format");
}
}
job.JobMetaNonWarranty.PurchaseOrderRaisedUserId = CurrentUser.Id;
job.JobMetaNonWarranty.PurchaseOrderRaisedUserId = CurrentUser.UserId;
Database.SaveChanges();
return new Models.Job._DateChangeModel()
{
@@ -808,7 +808,7 @@ namespace Disco.Web.Areas.API.Controllers
throw new Exception("Invalid Date Format");
}
}
job.JobMetaNonWarranty.PurchaseOrderSentUserId = CurrentUser.Id;
job.JobMetaNonWarranty.PurchaseOrderSentUserId = CurrentUser.UserId;
Database.SaveChanges();
return new Models.Job._DateChangeModel()
{
@@ -842,7 +842,7 @@ namespace Disco.Web.Areas.API.Controllers
throw new Exception("Invalid Date Format");
}
}
job.JobMetaNonWarranty.InvoiceReceivedUserId = CurrentUser.Id;
job.JobMetaNonWarranty.InvoiceReceivedUserId = CurrentUser.UserId;
Database.SaveChanges();
return new Models.Job._DateChangeModel()
{
@@ -991,7 +991,7 @@ namespace Disco.Web.Areas.API.Controllers
}
}
}
job.JobMetaInsurance.ClaimFormSentUserId = CurrentUser.Id;
job.JobMetaInsurance.ClaimFormSentUserId = CurrentUser.UserId;
Database.SaveChanges();
return new Models.Job._DateChangeModel()
{
@@ -1508,7 +1508,7 @@ namespace Disco.Web.Areas.API.Controllers
JobLog jobLog = new JobLog()
{
JobId = job.Id,
TechUserId = CurrentUser.Id,
TechUserId = CurrentUser.UserId,
Timestamp = DateTime.Now,
Comments = string.Format("Added Flag: {0}{1}Reason: {2}", flagStatus.Item1, Environment.NewLine, Reason)
};
@@ -1857,7 +1857,7 @@ namespace Disco.Web.Areas.API.Controllers
var jl = new Disco.Models.Repository.JobLog()
{
JobId = j.Id,
TechUserId = CurrentUser.Id,
TechUserId = CurrentUser.UserId,
Timestamp = DateTime.Now,
Comments = comment
};
@@ -1876,7 +1876,7 @@ namespace Disco.Web.Areas.API.Controllers
var jl = Database.JobLogs.Find(id);
if (jl != null)
{
if (jl.TechUserId.Equals(CurrentUser.Id, StringComparison.InvariantCultureIgnoreCase))
if (jl.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
Authorization.RequireAny(Claims.Job.Actions.RemoveAnyLogs, Claims.Job.Actions.RemoveOwnLogs);
else
Authorization.Require(Claims.Job.Actions.RemoveAnyLogs);
@@ -1950,7 +1950,7 @@ namespace Disco.Web.Areas.API.Controllers
var ja = new Disco.Models.Repository.JobAttachment()
{
JobId = j.Id,
TechUserId = CurrentUser.Id,
TechUserId = CurrentUser.UserId,
Filename = file.FileName,
MimeType = contentType,
Timestamp = DateTime.Now,
@@ -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.Id, StringComparison.InvariantCultureIgnoreCase))
if (ja.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
Authorization.RequireAny(Claims.Job.Actions.RemoveAnyAttachments, Claims.Job.Actions.RemoveOwnAttachments);
else
Authorization.Require(Claims.Job.Actions.RemoveAnyAttachments);
@@ -2046,7 +2046,7 @@ namespace Disco.Web.Areas.API.Controllers
JobId = j.Id,
Description = Description,
Cost = cost,
TechUserId = CurrentUser.Id
TechUserId = CurrentUser.UserId
};
Database.JobComponents.Add(jc);
Database.SaveChanges();
@@ -1,5 +1,4 @@
using Disco.BI.Interop.ActiveDirectory;
using Disco.Models.Interop.ActiveDirectory;
using Disco.Models.Interop.ActiveDirectory;
using Disco.Models.Repository;
using Disco.Services.Authorization;
using Disco.Services.Jobs.JobQueues;
@@ -9,6 +8,7 @@ using System;
using System.Linq;
using System.Web.Mvc;
using System.Collections.Generic;
using Disco.Services.Interop.ActiveDirectory;
namespace Disco.Web.Areas.API.Controllers
{
@@ -288,7 +288,7 @@ namespace Disco.Web.Areas.API.Controllers
// Validate Subjects
if (Subjects != null && Subjects.Length > 0)
{
var subjects = Subjects.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()).Select(s => new Tuple<string, IActiveDirectoryObject>(s, ActiveDirectory.GetObject(s))).ToList();
var subjects = Subjects.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()).Select(s => new Tuple<string, IActiveDirectoryObject>(s, ActiveDirectory.RetrieveObject(s))).ToList();
var invalidSubjects = subjects.Where(s => s.Item2 == null).ToList();
if (invalidSubjects.Count > 0)
@@ -370,8 +370,8 @@ namespace Disco.Web.Areas.API.Controllers
[DiscoAuthorize(Claims.Config.JobQueue.Configure)]
public virtual ActionResult SearchSubjects(string term)
{
var groupResults = BI.Interop.ActiveDirectory.ActiveDirectory.SearchGroups(term).Cast<IActiveDirectoryObject>();
var userResults = BI.Interop.ActiveDirectory.ActiveDirectory.SearchUsers(term).Cast<IActiveDirectoryObject>();
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();
@@ -382,7 +382,7 @@ namespace Disco.Web.Areas.API.Controllers
[DiscoAuthorize(Claims.Config.JobQueue.Configure)]
public virtual ActionResult Subject(string Id)
{
var subject = ActiveDirectory.GetObject(Id);
var subject = ActiveDirectory.RetrieveObject(Id);
if (subject == null || !(subject is ActiveDirectoryUserAccount || subject is ActiveDirectoryGroup))
return Json(null, JsonRequestBehavior.AllowGet);
@@ -1,8 +1,11 @@
using Disco.BI.Extensions;
using Disco.BI.Interop.ActiveDirectory;
using Disco.Data.Configuration;
using Disco.Models.Interop.ActiveDirectory;
using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Web;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
@@ -17,7 +20,7 @@ namespace Disco.Web.Areas.API.Controllers
[DiscoAuthorize(Claims.Config.System.Show)]
public virtual ActionResult UpdateLastNetworkLogonDates()
{
var taskStatus = ActiveDirectoryUpdateLastNetworkLogonDateJob.ScheduleImmediately();
var taskStatus = Disco.Services.Interop.ActiveDirectory.Internal.ADUpdateLastNetworkLogonDateJob.ScheduleImmediately();
return RedirectToAction(MVC.Config.Logging.TaskStatus(taskStatus.SessionId));
}
@@ -219,5 +222,97 @@ namespace Disco.Web.Areas.API.Controllers
#endregion
#region Active Directory
[DiscoAuthorize(Claims.Config.System.ConfigureActiveDirectory)]
public virtual ActionResult UpdateActiveDirectorySearchScope(List<string> Containers, bool redirect = false)
{
ActiveDirectory.UpdateSearchContainers(Database, Containers);
Database.SaveChanges();
if (redirect)
return RedirectToAction(MVC.Config.SystemConfig.Index());
else
return Json("OK", JsonRequestBehavior.AllowGet);
}
[DiscoAuthorize(Claims.Config.System.ConfigureActiveDirectory)]
public virtual ActionResult UpdateActiveDirectorySearchEntireForest(bool SearchEntireForest, bool redirect = false)
{
try
{
var result = ActiveDirectory.UpdateSearchEntireForest(Database, SearchEntireForest);
Database.SaveChanges();
if (!result)
{
var forestServers = ActiveDirectory.LoadForestServers();
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
throw new InvalidOperationException("Unable to change the 'SearchEntireForest' property for an unknown reason, please report this bug");
}
if (redirect)
return RedirectToAction(MVC.Config.SystemConfig.Index());
else
return Json("OK", JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
if (redirect)
throw;
else
return Json(string.Format("Error: {0}", ex.Message), JsonRequestBehavior.AllowGet);
}
}
[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) })
.Select(ous => ous.ToFancyTreeNode()).ToList();
return Json(domainOUs, JsonRequestBehavior.AllowGet);
}
#endregion
#region Proxy Settings
[DiscoAuthorize(Claims.Config.System.ConfigureProxy)]
public virtual ActionResult UpdateProxySettings(string ProxyAddress, int? ProxyPort, string ProxyUsername, string ProxyPassword, bool redirect = false)
{
// Default Proxy Port
if (!ProxyPort.HasValue)
ProxyPort = 8080;
SystemConfiguration config = Database.DiscoConfiguration;
//config.DataStoreLocation = DataStoreLocation;
config.ProxyAddress = ProxyAddress;
config.ProxyPort = ProxyPort.Value;
config.ProxyUsername = ProxyUsername;
config.ProxyPassword = ProxyPassword;
DiscoApplication.SetGlobalProxy(ProxyAddress, ProxyPort.Value, ProxyUsername, ProxyPassword);
Database.SaveChanges();
// Try and check for updates if needed - After Proxy Changed
if (Database.DiscoConfiguration.UpdateLastCheck == null
|| Database.DiscoConfiguration.UpdateLastCheck.ResponseTimestamp < DateTime.Now.AddDays(-1))
{
Disco.BI.Interop.Community.UpdateCheckTask.ScheduleNow();
}
if (redirect)
return RedirectToAction(MVC.Config.SystemConfig.Index());
else
return Json("OK", JsonRequestBehavior.AllowGet);
}
#endregion
}
}
@@ -1,5 +1,6 @@
using Disco.BI.Extensions;
using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Users;
using Disco.Services.Web;
using System;
@@ -61,8 +62,13 @@ namespace Disco.Web.Areas.API.Controllers
}
[DiscoAuthorize(Claims.User.Actions.AddAttachments)]
public virtual ActionResult AttachmentUpload(string id, string Comments)
public virtual ActionResult AttachmentUpload(string id, string Domain, string Comments)
{
if (string.IsNullOrEmpty(Domain))
id = ActiveDirectory.PrimaryDomain.NetBiosName + @"\" + id;
else
id = Domain + @"\" + id;
var u = Database.Users.Find(id);
if (u != null)
{
@@ -77,7 +83,7 @@ namespace Disco.Web.Areas.API.Controllers
var ua = new Disco.Models.Repository.UserAttachment()
{
UserId = u.Id,
UserId = u.UserId,
TechUserId = UserService.CurrentUserId,
Filename = file.FileName,
MimeType = contentType,
@@ -118,9 +124,14 @@ namespace Disco.Web.Areas.API.Controllers
}
[DiscoAuthorize(Claims.User.ShowAttachments)]
public virtual ActionResult Attachments(string id)
public virtual ActionResult Attachments(string id, string Domain)
{
var u = Database.Users.Include("UserAttachments.TechUser").Where(m => m.Id == id).FirstOrDefault();
if (string.IsNullOrEmpty(Domain))
id = ActiveDirectory.PrimaryDomain.NetBiosName + @"\" + id;
else
id = Domain + @"\" + id;
var u = Database.Users.Include("UserAttachments.TechUser").Where(m => m.UserId == id).FirstOrDefault();
if (u != null)
{
var m = new Models.Attachment.AttachmentsModel()
@@ -140,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.Id, StringComparison.InvariantCultureIgnoreCase))
if (ua.TechUserId.Equals(CurrentUser.UserId, StringComparison.InvariantCultureIgnoreCase))
Authorization.RequireAny(Claims.User.Actions.RemoveAnyAttachments, Claims.User.Actions.RemoveOwnAttachments);
else
Authorization.Require(Claims.User.Actions.RemoveAnyAttachments);
@@ -155,12 +166,18 @@ namespace Disco.Web.Areas.API.Controllers
#endregion
[DiscoAuthorize(Claims.User.Actions.GenerateDocuments)]
public virtual ActionResult GeneratePdf(string id, string DocumentTemplateId)
public virtual ActionResult GeneratePdf(string id, string Domain, string DocumentTemplateId)
{
if (string.IsNullOrEmpty(id))
throw new ArgumentNullException("id");
if (string.IsNullOrEmpty(DocumentTemplateId))
throw new ArgumentNullException("AttachmentTypeId");
if (string.IsNullOrEmpty(Domain))
id = ActiveDirectory.PrimaryDomain.NetBiosName + @"\" + id;
else
id = Domain + @"\" + id;
var user = Database.Users.Find(id);
if (user != null)
{
@@ -174,7 +191,7 @@ namespace Disco.Web.Areas.API.Controllers
pdf = documentTemplate.GeneratePdf(Database, user, UserService.CurrentUser, timeStamp, generationState);
}
Database.SaveChanges();
return File(pdf, "application/pdf", string.Format("{0}_{1}_{2:yyyyMMdd-HHmmss}.pdf", documentTemplate.Id, user.Id, timeStamp));
return File(pdf, "application/pdf", string.Format("{0}_{1}_{2:yyyyMMdd-HHmmss}.pdf", documentTemplate.Id, user.UserId, timeStamp));
}
else
{
@@ -0,0 +1,47 @@
using Disco.Models.Interop.ActiveDirectory;
using Disco.Web.Models.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Disco.Web.Areas.API.Models.System
{
public class DomainOrganisationalUnitsModel
{
public ActiveDirectoryDomain Domain { get; set; }
public List<ActiveDirectoryOrganisationalUnit> OrganisationalUnits { get; set; }
public FancyTreeNode ToFancyTreeNode()
{
FancyTreeNode[] children = OrganisationalUnits.Select(ou => OrganisationalUnitToFancyTreeNode(ou)).ToArray();
return new FancyTreeNode()
{
key = Domain.DistinguishedName,
title = Domain.NetBiosName,
folder = true,
tooltip = Domain.DnsName,
children = children,
unselectable = false,
expanded = true
};
}
private FancyTreeNode OrganisationalUnitToFancyTreeNode(ActiveDirectoryOrganisationalUnit OrganisationalUnit)
{
FancyTreeNode[] children = OrganisationalUnit.Children == null
? null
: OrganisationalUnit.Children.Select(ou => OrganisationalUnitToFancyTreeNode(ou)).ToArray();
return new FancyTreeNode()
{
key = OrganisationalUnit.DistinguishedName,
title = OrganisationalUnit.Name,
folder = true,
tooltip = OrganisationalUnit.DistinguishedName,
children = children,
unselectable = false
};
}
}
}
@@ -2,6 +2,7 @@
using Disco.Models.UI.Config.AuthorizationRole;
using Disco.Services.Authorization;
using Disco.Services.Authorization.Roles;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Plugins.Features.UIExtension;
using Disco.Services.Users;
using Disco.Services.Web;
@@ -27,7 +28,7 @@ namespace Disco.Web.Areas.Config.Controllers
var token = RoleToken.FromAuthorizationRole(ar);
var subjects = token.SubjectIds == null ? new List<Models.AuthorizationRole.ShowModel.SubjectDescriptor>() :
token.SubjectIds.Select(subjectId => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetObject(subjectId))
token.SubjectIds.Select(subjectId => ActiveDirectory.RetrieveObject(subjectId))
.Where(item => item != null)
.Select(item => Models.AuthorizationRole.ShowModel.SubjectDescriptor.FromActiveDirectoryObject(item))
.OrderBy(item => item.Name).ToList();
@@ -2,6 +2,7 @@
using Disco.Models.Repository;
using Disco.Models.UI.Config.DeviceProfile;
using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Plugins;
using Disco.Services.Plugins.Features.CertificateProvider;
using Disco.Services.Plugins.Features.UIExtension;
@@ -75,7 +76,8 @@ namespace Disco.Web.Areas.Config.Controllers
{
ComputerNameTemplate = DeviceProfile.DefaultComputerNameTemplate,
ProvisionADAccount = true,
DistributionType = DeviceProfile.DistributionTypes.OneToMany
DistributionType = DeviceProfile.DistributionTypes.OneToMany,
OrganisationalUnit = ActiveDirectory.PrimaryDomain.GetDefaultComputerContainer()
}
};
@@ -2,6 +2,7 @@
using Disco.Models.Services.Jobs.JobQueues;
using Disco.Models.UI.Config.JobQueue;
using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Jobs.JobQueues;
using Disco.Services.Plugins.Features.UIExtension;
using Disco.Services.Web;
@@ -28,7 +29,7 @@ namespace Disco.Web.Areas.Config.Controllers
var token = JobQueueToken.FromJobQueue(jq);
var subjects = token.SubjectIds == null ? new List<Models.JobQueue.ShowModel.SubjectDescriptor>() :
token.SubjectIds.Select(subjectId => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetObject(subjectId))
token.SubjectIds.Select(subjectId => ActiveDirectory.RetrieveObject(subjectId))
.Where(item => item != null)
.Select(item => Models.JobQueue.ShowModel.SubjectDescriptor.FromActiveDirectoryObject(item))
.OrderBy(item => item.Name).ToList();
@@ -12,20 +12,5 @@ namespace Disco.Web.Areas.Config.Controllers
var m = Models.SystemConfig.IndexModel.FromConfiguration(Database.DiscoConfiguration);
return View(m);
}
[DiscoAuthorizeAll(Claims.Config.System.Show, Claims.Config.System.ConfigureProxy), HttpPost]
public virtual ActionResult Index(Models.SystemConfig.IndexModel config)
{
if (ModelState.IsValid)
{
config.ToConfiguration(Database);
return RedirectToAction(MVC.Config.Config.Index());
}
else
{
return View();
}
}
}
}
@@ -40,7 +40,7 @@ namespace Disco.Web.Areas.Config.Models.AuthorizationRole
{
var item = new SubjectDescriptor()
{
Id = ADObject.SamAccountName,
Id = ADObject.NetBiosId,
Name = ADObject.Name
};
@@ -8,6 +8,9 @@ using System.Data.SqlClient;
using Disco.Data.Repository;
using Disco.Models.BI.Interop.Community;
using Disco.Services.Tasks;
using Disco.Models.Interop.ActiveDirectory;
using System.DirectoryServices.ActiveDirectory;
using Disco.Services.Interop.ActiveDirectory;
namespace Disco.Web.Areas.Config.Models.SystemConfig
{
@@ -72,6 +75,20 @@ namespace Disco.Web.Areas.Config.Models.SystemConfig
}
#endregion
#region Active Directory
[Display(Name="Search Entire Forest")]
public bool ADSearchEntireForest { get; set; }
public ActiveDirectoryDomain ADPrimaryDomain { get; set; }
public List<ActiveDirectoryDomain> ADAdditionalDomains { get; set; }
public ActiveDirectorySite ADSite { get; set; }
public List<Tuple<DirectoryServer, bool>> ADSiteServers { get; set; }
public List<Tuple<string, ActiveDirectoryDomain, string>> ADSearchContainers { get; set; }
public List<string> ADForestServers { get; set; }
#endregion
#region Proxy
public string ProxyAddress { get; set; }
public int ProxyPort { get; set; }
@@ -87,7 +104,7 @@ namespace Disco.Web.Areas.Config.Models.SystemConfig
public static IndexModel FromConfiguration(SystemConfiguration config)
{
return new IndexModel()
var m = new IndexModel()
{
DiscoVersion = typeof(DiscoApplication).Assembly.GetName().Version,
DataStoreLocation = config.DataStoreLocation,
@@ -100,27 +117,33 @@ namespace Disco.Web.Areas.Config.Models.SystemConfig
UpdateNextScheduled = Disco.BI.Interop.Community.UpdateCheckTask.NextScheduled,
UpdateBetaDeployment = config.UpdateBetaDeployment
};
}
public void ToConfiguration(DiscoDataContext Database)
{
SystemConfiguration config = Database.DiscoConfiguration;
//config.DataStoreLocation = DataStoreLocation;
config.ProxyAddress = ProxyAddress;
config.ProxyPort = ProxyPort;
config.ProxyUsername = ProxyUsername;
config.ProxyPassword = ProxyPassword;
DiscoApplication.SetGlobalProxy(ProxyAddress, ProxyPort, ProxyUsername, ProxyPassword);
Database.SaveChanges();
// Try and check for updates if needed - After Proxy Changed
if (Database.DiscoConfiguration.UpdateLastCheck == null
|| Database.DiscoConfiguration.UpdateLastCheck.ResponseTimestamp < DateTime.Now.AddDays(-1))
// AD
m.ADPrimaryDomain = ActiveDirectory.PrimaryDomain;
m.ADAdditionalDomains = ActiveDirectory.Domains.Where(d => d != m.ADPrimaryDomain).ToList();
m.ADSite = ActiveDirectory.Site;
m.ADSiteServers = m.ADSite.Servers.Cast<DirectoryServer>().Select(s => Tuple.Create(s, s.Reachable())).ToList();
var configSearchContainers = config.ActiveDirectory.SearchContainers;
m.ADSearchContainers = configSearchContainers == null ? null : configSearchContainers.Select(c =>
{
Disco.BI.Interop.Community.UpdateCheckTask.ScheduleNow();
}
}
var d = ActiveDirectory.GetDomainByDistinguishedName(c);
return Tuple.Create(c, d, d.GetFriendlyOrganisationalUnitName(c));
}).ToList();
var loadForestServersTask = ActiveDirectory.LoadForestServersAsync();
if (loadForestServersTask.Wait(TimeSpan.FromSeconds(3)))
{
m.ADForestServers = loadForestServersTask.Result;
var configValue = config.ActiveDirectory.SearchEntireForest ?? true;
m.ADSearchEntireForest = configValue && m.ADForestServers.Count <= ActiveDirectory.MaxForestServerSearch;
}
else
{
m.ADForestServers = null;
m.ADSearchEntireForest = config.ActiveDirectory.SearchEntireForest ?? true;
}
return m;
}
}
}
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.AuthorizationRole
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.AuthorizationRole
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -35,6 +35,7 @@ namespace Disco.Web.Areas.Config.Views.AuthorizationRole
#line default
#line hidden
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Config
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceBatch
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceBatch
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceBatch
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceBatch
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceModel
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceModel
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceModel
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceModel
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -35,6 +35,7 @@
@Html.HiddenFor(model => model.DeviceProfile.ComputerNameTemplate)
@Html.HiddenFor(model => model.DeviceProfile.ProvisionADAccount)
@Html.HiddenFor(model => model.DeviceProfile.DistributionType)
@Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit)
<p class="actions">
<input type="submit" class="button" value="Create" />
</p>
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -174,6 +175,17 @@ WriteLiteral(" ");
Write(Html.HiddenFor(model => model.DeviceProfile.DistributionType));
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral(" ");
#line 38 "..\..\Areas\Config\Views\DeviceProfile\Create.cshtml"
Write(Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit));
#line default
#line hidden
WriteLiteral("\r\n <p");
@@ -198,7 +210,7 @@ WriteLiteral(">\r\n $(function () {\r\n $(\'#Name\').focus().s
"\r\n </script>\r\n");
#line 47 "..\..\Areas\Config\Views\DeviceProfile\Create.cshtml"
#line 48 "..\..\Areas\Config\Views\DeviceProfile\Create.cshtml"
}
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -10,8 +10,8 @@
if (canConfig)
{
Html.BundleDeferred("~/Style/jQueryUI/dynatree");
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-DynaTree");
Html.BundleDeferred("~/Style/Fancytree");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Fancytree");
}
}
<div id="configurationDeviceProfileShow" class="form" style="width: 640px">
@@ -322,7 +322,8 @@
</td>
</tr>
<tr>
<th>Computer Name<br />Template Expression:
<th>Computer Name<br />
Template Expression:
</th>
<td>@if (canConfig && canConfigExpression)
{
@@ -517,125 +518,135 @@
</td>
</tr>
<tr>
<th>Default Organisational Unit:
<th>Organisational Unit:
</th>
<td>@if (canConfig)
{
@Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit)
<div id="displayOrganisationalUnit" class="code">
<div id="DeviceProfile_OrganisationalUnit" class="code" data-value="@Model.DeviceProfile.OrganisationalUnit">
@if (string.IsNullOrEmpty(Model.DeviceProfile.OrganisationalUnit))
{
<span>{Default Computers Container}</span>
}
else
{
var domain = Disco.Services.Interop.ActiveDirectory.ActiveDirectory.GetDomainByDistinguishedName(Model.DeviceProfile.OrganisationalUnit);
<span>
@Disco.Services.Interop.ActiveDirectory.ActiveDirectoryExtensions.GetFriendlyOrganisationalUnitName(domain, Model.DeviceProfile.OrganisationalUnit)
</span>
}
</div>
<a id="changeOrganisationalUnit" href="#" class="button small">Change</a>@AjaxHelpers.AjaxLoader()
<div id="dialogOrganisationalUnit" title="Default Organisational Unit">
<div id="treeOrganisationalUnit">
<div id="dialogOrganisationalUnit" title="Organisational Unit" class="dialog">
<div id="treeOrganisationalUnit" class="organisationalUnitTree">
</div>
</div>
<script type="text/javascript">
$(function () {
var ouValue = $('#DeviceProfile_OrganisationalUnit');
var ouDisplay = $('#displayOrganisationalUnit');
var ouTree = $('#treeOrganisationalUnit');
var ouChangeLink = $('#changeOrganisationalUnit');
var ouTreeLoaded = false;
var ouFriendlyName = function (ou) {
return ou.replace(/ou=/gi, '').split(',').reverse().join(' > ');
};
var updateDisplayOrganisationalUnit = function () {
var value = ouValue.val();
if (value) {
ouDisplay.text(ouFriendlyName(value));
} else {
ouDisplay.text('{Default Computers Container}');
}
};
var ouSetUrl = '@Url.Action(MVC.API.DeviceProfile.UpdateOrganisationalUnit(Model.DeviceProfile.Id, null, true))';
var ouValue = $('#DeviceProfile_OrganisationalUnit').attr('data-value');
var $ouTree = null;
var ouTree = null;
var $dialog = null;
var ouSet = function (ou) {
$ajaxLoading = ouChangeLink.next('.ajaxLoading').show();
var data = { OrganisationalUnit: ou };
$.getJSON('@Url.Action(MVC.API.DeviceProfile.UpdateOrganisationalUnit(Model.DeviceProfile.Id, null))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Organisational Unit:\n' + response);
$ajaxLoading.hide();
} else {
ouValue.val(ou);
updateDisplayOrganisationalUnit();
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
var url = ouSetUrl + '&' + $.param({ OrganisationalUnit: ou })
window.location.href = url;
}
var ouUpdateTree = function () {
var dynaTree = ouTree.dynatree("getTree");
var value = ouValue.val();
if (value) {
dynaTree.activateKey(value);
} else {
var activeNode = dynaTree.getActiveNode();
if (activeNode)
activeNode.deactivate();
var expandNodeTree = function (node) {
var parent = node.parent;
if (parent) {
expandNodeTree(parent);
parent.setExpanded(true, { noAnimation: true, noEvents: false });
}
}
var expandAndFocusNode = function (nodeKey) {
if (ouTree) {
var ouNode = ouTree.getNodeByKey(ouValue);
if (ouNode) {
expandNodeTree(ouNode);
ouNode.setFocus(true);
ouNode.setActive(true);
var ouDialog = $('#dialogOrganisationalUnit').dialog({
autoOpen: false,
buttons: {
'Use Default Container': function () {
ouSet('');
$(this).dialog("close");
},
'Save': function () {
var node = ouTree.dynatree("getTree").getActiveNode();
if (node) {
ouSet(node.data.key);
$(this).dialog("close");
} else {
alert('Select an Organisational Unit to Save')
}
var li = ouNode.li;
var liOffset = li.offsetParent;
if (li.offsetTop + li.offsetHeight > liOffset.offsetHeight)
$(liOffset).animate({ 'scrollTop': li.offsetTop - liOffset.offsetHeight + li.offsetHeight + 4 }, 'fast');
}
},
draggable: false,
modal: true,
resizable: false,
width: 400,
height: 400
});
var ouChange = function () {
if (!ouTreeLoaded) {
$.getJSON('@(Url.Action(MVC.API.DeviceProfile.OrganisationalUnits()))', null, function (data) {
var dynatreeDataTransformer = function (element) {
var child = {
title: element.Name,
key: element.Path,
isFolder: true
}
if (element.Children) {
child.children = [];
for (var i = 0; i < element.Children.length; i++) {
child.children.push(dynatreeDataTransformer(element.Children[i]));
}
}
return child;
};
var dynatreeData = [];
for (var i = 0; i < data.length; i++) {
dynatreeData.push(dynatreeDataTransformer(data[i]));
}
ouTree.dynatree({
children: dynatreeData,
onActivate: function (node) {
//alert('node selected: ' + node.data.key);
}
});
ouTreeLoaded = true;
ouUpdateTree();
});
} else {
ouUpdateTree();
}
}
ouDialog.dialog('open');
var ouChange = function () {
if (!$dialog) {
$dialog = $('#dialogOrganisationalUnit').dialog({
autoOpen: false,
buttons: null,
draggable: false,
modal: true,
resizable: false,
width: 500,
height: 500
});
$ouTree = $('#treeOrganisationalUnit');
$dialog.css('overflow', 'visible');
$ouTree.css('height', '100%');
$.getJSON('@(Url.Action(MVC.API.System.DomainOrganisationalUnits()))', null, function (data) {
// Make 'Domains' unselectable
$.each(data, function (i, node) {
node.unselectable = true;
});
ouTree = $ouTree.fancytree({
source: data,
checkbox: false,
selectMode: 1,
keyboard: false,
fx: null
}).fancytree('getTree');
ouTree.$container.css('position', 'relative');
// Set Buttons
$dialog.dialog('option', 'buttons', {
'Use Default Container': function () {
var $this = $(this);
$this.css('overflow', 'hidden');
$this.dialog("disable");
$this.dialog("option", "buttons", null);
ouSet('');
},
'Save': function () {
var node = ouTree.getActiveNode();
if (node && node.key.substr(0, 3).toLowerCase() == 'ou=') {
var $this = $(this);
$this.css('overflow', 'hidden');
$this.dialog("disable");
$this.dialog("option", "buttons", null);
ouSet(node.key);
} else {
alert('Select an Organisational Unit to Save')
}
}
});
// Expand
expandAndFocusNode(ouValue);
ouTree.options.fx = { height: "toggle", duration: 200 };
});
}
$dialog.dialog('open');
if (ouTree) {
// Expand
expandAndFocusNode(ouValue);
}
return false;
};
ouChangeLink.click(ouChange);
updateDisplayOrganisationalUnit();
$('#changeOrganisationalUnit').click(ouChange);
});
</script>
}
@@ -648,8 +659,10 @@
}
else
{
var domain = Disco.Services.Interop.ActiveDirectory.ActiveDirectory.GetDomainByDistinguishedName(Model.DeviceProfile.OrganisationalUnit);
<span>
@string.Join(" > ", Model.DeviceProfile.OrganisationalUnit.Split(',').Select(s => s.Substring(3)).Reverse())
@Disco.Services.Interop.ActiveDirectory.ActiveDirectoryExtensions.GetFriendlyOrganisationalUnitName(domain, Model.DeviceProfile.OrganisationalUnit)
</span>
}
</div>
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -56,8 +57,8 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile
if (canConfig)
{
Html.BundleDeferred("~/Style/jQueryUI/dynatree");
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-DynaTree");
Html.BundleDeferred("~/Style/Fancytree");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Fancytree");
}
@@ -897,10 +898,10 @@ WriteLiteral(">&lt;None Allocated&gt;</span>\r\n");
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th>Computer Name<br " +
"/>Template Expression:\r\n </th>\r\n <td>");
"/>\r\n Template Expression:\r\n </th>\r\n <td>");
#line 327 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 328 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig && canConfigExpression)
{
@@ -908,42 +909,42 @@ WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n
#line default
#line hidden
#line 329 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 330 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.TextBoxFor(model => model.DeviceProfile.ComputerNameTemplate));
#line default
#line hidden
#line 329 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 330 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 330 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 331 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 330 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 331 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 331 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 332 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 331 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 332 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
@@ -953,14 +954,14 @@ WriteLiteral(" <a");
WriteLiteral(" id=\"expressionBrowserAnchor\"");
WriteAttribute("href", Tuple.Create(" href=\"", 16261), Tuple.Create("\"", 16330)
WriteAttribute("href", Tuple.Create(" href=\"", 16270), Tuple.Create("\"", 16339)
#line 332 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
, Tuple.Create(Tuple.Create("", 16268), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser())
#line 333 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
, Tuple.Create(Tuple.Create("", 16277), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser())
#line default
#line hidden
, 16268), false)
, 16277), false)
);
WriteLiteral(">&nbsp;</a>\r\n");
@@ -991,7 +992,7 @@ WriteLiteral(@">
url: '");
#line 352 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 353 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateComputerNameTemplate(Model.DeviceProfile.Id)));
@@ -1019,7 +1020,7 @@ WriteLiteral(@"',
");
#line 371 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 372 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1036,13 +1037,13 @@ WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n");
#line 375 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 376 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 375 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 376 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (string.IsNullOrWhiteSpace(Model.DeviceProfile.ComputerNameTemplate))
{
@@ -1056,7 +1057,7 @@ WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">&lt;None Specified&gt;</span>\r\n");
#line 378 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 379 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1065,14 +1066,14 @@ WriteLiteral(">&lt;None Specified&gt;</span>\r\n");
#line default
#line hidden
#line 381 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 382 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.ComputerNameTemplate);
#line default
#line hidden
#line 381 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 382 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1082,7 +1083,7 @@ WriteLiteral(">&lt;None Specified&gt;</span>\r\n");
WriteLiteral(" </div>\r\n");
#line 384 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 385 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1095,13 +1096,13 @@ WriteLiteral(" style=\"margin-top: 8px;\"");
WriteLiteral(">\r\n");
#line 386 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 387 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 386 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 387 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig)
{
@@ -1117,7 +1118,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 388 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 389 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.EnforceComputerNameConvention ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1138,7 +1139,7 @@ WriteLiteral(@">
$.getJSON('");
#line 395 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 396 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceComputerNameConvention(Model.DeviceProfile.Id)));
@@ -1158,7 +1159,7 @@ WriteLiteral(@"', data, function (response, result) {
");
#line 406 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 407 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1175,7 +1176,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 409 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 410 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.EnforceComputerNameConvention ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1184,7 +1185,7 @@ WriteLiteral(" ");
WriteLiteral(" disabled=\"disabled\" />\r\n");
#line 410 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 411 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1200,7 +1201,7 @@ WriteLiteral(">\r\n Enforce Naming Convention\r\n
WriteLiteral(" ");
#line 414 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 415 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
@@ -1218,13 +1219,13 @@ WriteLiteral(">\r\n Note: Computer names are only changed whe
" <div>\r\n");
#line 425 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 426 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 425 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 426 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig)
{
@@ -1240,7 +1241,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 427 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 428 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.ProvisionADAccount ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1261,7 +1262,7 @@ WriteLiteral(@">
$.getJSON('");
#line 434 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 435 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateProvisionADAccount(Model.DeviceProfile.Id)));
@@ -1281,7 +1282,7 @@ WriteLiteral(@"', data, function (response, result) {
");
#line 445 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 446 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1298,7 +1299,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 448 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 449 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.ProvisionADAccount ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1307,7 +1308,7 @@ WriteLiteral(" ");
WriteLiteral(" disabled=\"disabled\" />\r\n");
#line 449 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 450 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1323,7 +1324,7 @@ WriteLiteral(">\r\n Provision Active Directory Account\r\
WriteLiteral(" ");
#line 453 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 454 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
@@ -1336,13 +1337,13 @@ WriteLiteral(" style=\"margin-top: 8px;\"");
WriteLiteral(">\r\n");
#line 456 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 457 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 456 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 457 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig)
{
@@ -1358,7 +1359,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 458 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 459 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.AssignedUserLocalAdmin ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1379,7 +1380,7 @@ WriteLiteral(@">
$.getJSON('");
#line 465 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 466 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateAssignedUserLocalAdmin(Model.DeviceProfile.Id)));
@@ -1399,7 +1400,7 @@ WriteLiteral(@"', data, function (response, result) {
");
#line 476 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 477 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1416,7 +1417,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 479 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 480 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.AssignedUserLocalAdmin ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1425,7 +1426,7 @@ WriteLiteral(" ");
WriteLiteral(" disabled=\"disabled\" />\r\n");
#line 480 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 481 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1441,7 +1442,7 @@ WriteLiteral(">\r\n Assigned User is Local Administrator\
WriteLiteral(" ");
#line 484 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 485 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
@@ -1454,13 +1455,13 @@ WriteLiteral(" style=\"margin-top: 8px;\"");
WriteLiteral(">\r\n");
#line 487 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 488 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 487 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 488 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig)
{
@@ -1476,7 +1477,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 489 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 490 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : null);
@@ -1497,7 +1498,7 @@ WriteLiteral(@">
$.getJSON('");
#line 496 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 497 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateAllowUntrustedReimageJobEnrolment(Model.DeviceProfile.Id)));
@@ -1517,7 +1518,7 @@ WriteLiteral(@"', data, function (response, result) {
");
#line 507 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 508 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1534,7 +1535,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 510 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 511 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1543,7 +1544,7 @@ WriteLiteral(" ");
WriteLiteral(" disabled=\"disabled\" />\r\n");
#line 511 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 512 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1562,44 +1563,90 @@ WriteLiteral(">\'Software - Reimage\'</span> Job is Open\r\n
WriteLiteral(" ");
#line 515 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 516 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n " +
" <th>Default Organisational Unit:\r\n </th>\r\n <td>");
" <th>Organisational Unit:\r\n </th>\r\n <td>");
#line 522 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 523 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 524 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit));
#line default
#line hidden
#line 524 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"displayOrganisationalUnit\"");
WriteLiteral(" id=\"DeviceProfile_OrganisationalUnit\"");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n </div>\r\n");
WriteLiteral(" data-value=\"");
#line 525 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.OrganisationalUnit);
#line default
#line hidden
WriteLiteral("\"");
WriteLiteral(">\r\n");
#line 526 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 526 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (string.IsNullOrEmpty(Model.DeviceProfile.OrganisationalUnit))
{
#line default
#line hidden
WriteLiteral(" <span>{Default Computers Container}</span>\r\n");
#line 529 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
var domain = Disco.Services.Interop.ActiveDirectory.ActiveDirectory.GetDomainByDistinguishedName(Model.DeviceProfile.OrganisationalUnit);
#line default
#line hidden
WriteLiteral(" <span>\r\n");
WriteLiteral(" ");
#line 535 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Disco.Services.Interop.ActiveDirectory.ActiveDirectoryExtensions.GetFriendlyOrganisationalUnitName(domain, Model.DeviceProfile.OrganisationalUnit));
#line default
#line hidden
WriteLiteral("\r\n </span>\r\n");
#line 537 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
#line default
#line hidden
WriteLiteral(" </div>\r\n");
WriteLiteral(" <a");
@@ -1612,20 +1659,20 @@ WriteLiteral(" class=\"button small\"");
WriteLiteral(">Change</a>");
#line 527 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 539 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 527 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 539 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 527 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 539 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
@@ -1635,117 +1682,113 @@ WriteLiteral(" <div");
WriteLiteral(" id=\"dialogOrganisationalUnit\"");
WriteLiteral(" title=\"Default Organisational Unit\"");
WriteLiteral(" title=\"Organisational Unit\"");
WriteLiteral(" class=\"dialog\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" id=\"treeOrganisationalUnit\"");
WriteLiteral(" class=\"organisationalUnitTree\"");
WriteLiteral(">\r\n </div>\r\n </div>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var ouValue = $('#DeviceProfile_OrganisationalUnit');
var ouDisplay = $('#displayOrganisationalUnit');
var ouTree = $('#treeOrganisationalUnit');
var ouChangeLink = $('#changeOrganisationalUnit');
var ouTreeLoaded = false;
var ouFriendlyName = function (ou) {
return ou.replace(/ou=/gi, '').split(',').reverse().join(' > ');
};
var updateDisplayOrganisationalUnit = function () {
var value = ouValue.val();
if (value) {
ouDisplay.text(ouFriendlyName(value));
} else {
ouDisplay.text('{Default Computers Container}');
}
};
var ouSet = function (ou) {
$ajaxLoading = ouChangeLink.next('.ajaxLoading').show();
var data = { OrganisationalUnit: ou };
$.getJSON('");
WriteLiteral(">\r\n $(function () {\r\n var ouSetUrl = \'");
#line 553 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateOrganisationalUnit(Model.DeviceProfile.Id, null)));
#line 546 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateOrganisationalUnit(Model.DeviceProfile.Id, null, true)));
#line default
#line hidden
WriteLiteral("\', data, function (response, result) {\r\n if (resul" +
"t != \'success\' || response != \'OK\') {\r\n alert" +
"(\'Unable to change Organisational Unit:\\n\' + response);\r\n " +
" $ajaxLoading.hide();\r\n } else {\r\n " +
" ouValue.val(ou);\r\n " +
" updateDisplayOrganisationalUnit();\r\n $" +
"ajaxLoading.hide().next(\'.ajaxOk\').show().delay(\'fast\').fadeOut(\'slow\');\r\n " +
" }\r\n });\r\n " +
" }\r\n var ouUpdateTree = function () {\r\n " +
" var dynaTree = ouTree.dynatree(\"getTree\");\r\n " +
" var value = ouValue.val();\r\n if (value) {\r\n " +
" dynaTree.activateKey(value);\r\n " +
" } else {\r\n var activeNode = dynaTree.getAc" +
"tiveNode();\r\n if (activeNode)\r\n " +
" activeNode.deactivate();\r\n }\r\n " +
" }\r\n\r\n var ouDialog = $(\'#dialogOrganis" +
"ationalUnit\').dialog({\r\n autoOpen: false,\r\n " +
" buttons: {\r\n \'Use Default Conta" +
"iner\': function () {\r\n ouSet(\'\');\r\n " +
" $(this).dialog(\"close\");\r\n " +
" },\r\n \'Save\': function () {\r\n " +
" var node = ouTree.dynatree(\"getTree\").getActiveNode();\r\n " +
" if (node) {\r\n " +
" ouSet(node.data.key);\r\n $(this).dialo" +
"g(\"close\");\r\n } else {\r\n " +
" alert(\'Select an Organisational Unit to Save\')\r\n " +
" }\r\n }\r\n " +
" },\r\n draggable: false,\r\n " +
" modal: true,\r\n resizable: false,\r\n " +
" width: 400,\r\n height: 400\r\n " +
" });\r\n\r\n var ouChange = function () {\r\n " +
" if (!ouTreeLoaded) {\r\n $." +
"getJSON(\'");
WriteLiteral("\';\r\n var ouValue = $(\'#DeviceProfile_OrganisationalUnit\')." +
"attr(\'data-value\');\r\n var $ouTree = null;\r\n " +
" var ouTree = null;\r\n var $dialog = null;\r\n " +
" var ouSet = function (ou) {\r\n var " +
"url = ouSetUrl + \'&\' + $.param({ OrganisationalUnit: ou })\r\n " +
" window.location.href = url;\r\n }\r\n " +
" var expandNodeTree = function (node) {\r\n var " +
"parent = node.parent;\r\n if (parent) {\r\n " +
" expandNodeTree(parent);\r\n paren" +
"t.setExpanded(true, { noAnimation: true, noEvents: false });\r\n " +
" }\r\n }\r\n var expandAndFoc" +
"usNode = function (nodeKey) {\r\n if (ouTree) {\r\n " +
" var ouNode = ouTree.getNodeByKey(ouValue);\r\n " +
" if (ouNode) {\r\n expandN" +
"odeTree(ouNode);\r\n ouNode.setFocus(true);\r\n " +
" ouNode.setActive(true);\r\n\r\n " +
" var li = ouNode.li;\r\n var li" +
"Offset = li.offsetParent;\r\n if (li.offsetTop " +
"+ li.offsetHeight > liOffset.offsetHeight)\r\n " +
" $(liOffset).animate({ \'scrollTop\': li.offsetTop - liOffset.offsetHeight + li" +
".offsetHeight + 4 }, \'fast\');\r\n }\r\n " +
" }\r\n }\r\n var ouChange" +
" = function () {\r\n if (!$dialog) {\r\n\r\n " +
" $dialog = $(\'#dialogOrganisationalUnit\').dialog({\r\n " +
" autoOpen: false,\r\n bu" +
"ttons: null,\r\n draggable: false,\r\n " +
" modal: true,\r\n resiz" +
"able: false,\r\n width: 500,\r\n " +
" height: 500\r\n });\r\n " +
" $ouTree = $(\'#treeOrganisationalUnit\');\r\n " +
" $dialog.css(\'overflow\', \'visible\');\r\n " +
" $ouTree.css(\'height\', \'100%\');\r\n\r\n $.getJSON(\'" +
"");
#line 602 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.OrganisationalUnits()));
#line 593 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.System.DomainOrganisationalUnits()));
#line default
#line hidden
WriteLiteral("\', null, function (data) {\r\n var dynatreeDataTrans" +
"former = function (element) {\r\n var child = {" +
"\r\n title: element.Name,\r\n " +
" key: element.Path,\r\n " +
" isFolder: true\r\n }\r\n " +
" if (element.Children) {\r\n " +
"child.children = [];\r\n for (var i = 0; i " +
"< element.Children.length; i++) {\r\n c" +
"hild.children.push(dynatreeDataTransformer(element.Children[i]));\r\n " +
" }\r\n }\r\n " +
" return child;\r\n };\r\n " +
" var dynatreeData = [];\r\n " +
" for (var i = 0; i < data.length; i++) {\r\n " +
" dynatreeData.push(dynatreeDataTransformer(data[i]));\r\n " +
" }\r\n\r\n ouTree.dynatree({\r\n " +
" children: dynatreeData,\r\n " +
"onActivate: function (node) {\r\n //alert(\'" +
"node selected: \' + node.data.key);\r\n }\r\n " +
" });\r\n ouTreeLoaded = t" +
"rue;\r\n ouUpdateTree();\r\n " +
" });\r\n } else {\r\n ouUpdateTr" +
"ee();\r\n }\r\n ouDialog.dialog(\'o" +
"pen\');\r\n };\r\n\r\n ouChangeLink.click" +
"(ouChange);\r\n updateDisplayOrganisationalUnit();\r\n " +
" });\r\n </script>\r\n");
WriteLiteral("\', null, function (data) {\r\n\r\n // Make \'Domain" +
"s\' unselectable\r\n $.each(data, function (i, n" +
"ode) {\r\n node.unselectable = true;\r\n " +
" });\r\n\r\n ouTree" +
" = $ouTree.fancytree({\r\n source: data,\r\n " +
" checkbox: false,\r\n " +
" selectMode: 1,\r\n keyboar" +
"d: false,\r\n fx: null\r\n " +
" }).fancytree(\'getTree\');\r\n\r\n " +
" ouTree.$container.css(\'position\', \'relative\');\r\n\r\n " +
" // Set Buttons\r\n $dialog.dialog(\'optio" +
"n\', \'buttons\', {\r\n \'Use Default Container" +
"\': function () {\r\n var $this = $(this" +
");\r\n $this.css(\'overflow\', \'hidden\');" +
"\r\n $this.dialog(\"disable\");\r\n " +
" $this.dialog(\"option\", \"buttons\", null);\r\n " +
" ouSet(\'\');\r\n " +
" },\r\n \'Save\': function () {\r" +
"\n var node = ouTree.getActiveNode();\r" +
"\n if (node && node.key.substr(0, 3).t" +
"oLowerCase() == \'ou=\') {\r\n var $t" +
"his = $(this);\r\n $this.css(\'overf" +
"low\', \'hidden\');\r\n $this.dialog(\"" +
"disable\");\r\n $this.dialog(\"option" +
"\", \"buttons\", null);\r\n ouSet(node" +
".key);\r\n } else {\r\n " +
" alert(\'Select an Organisational Unit to Save\')\r\n " +
" }\r\n " +
" }\r\n });\r\n\r\n " +
" // Expand\r\n expandAndFocusNode(ouValue" +
");\r\n\r\n ouTree.options.fx = { height: \"toggle\"" +
", duration: 200 };\r\n });\r\n " +
" }\r\n $dialog.dialog(\'open\');\r\n\r\n " +
" if (ouTree) {\r\n // Expand\r\n " +
" expandAndFocusNode(ouValue);\r\n }" +
"\r\n\r\n return false;\r\n };\r\n\r\n " +
" $(\'#changeOrganisationalUnit\').click(ouChange);\r\n " +
" });\r\n </script>\r\n");
#line 641 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 652 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1762,13 +1805,13 @@ WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n");
#line 645 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 656 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 645 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 656 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (string.IsNullOrEmpty(Model.DeviceProfile.OrganisationalUnit))
{
@@ -1778,10 +1821,12 @@ WriteLiteral(">\r\n");
WriteLiteral(" <span>{Default Computers Container}</span>\r\n");
#line 648 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 659 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
var domain = Disco.Services.Interop.ActiveDirectory.ActiveDirectory.GetDomainByDistinguishedName(Model.DeviceProfile.OrganisationalUnit);
#line default
@@ -1791,8 +1836,8 @@ WriteLiteral(" <span>\r\n");
WriteLiteral(" ");
#line 652 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(string.Join(" > ", Model.DeviceProfile.OrganisationalUnit.Split(',').Select(s => s.Substring(3)).Reverse()));
#line 665 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Disco.Services.Interop.ActiveDirectory.ActiveDirectoryExtensions.GetFriendlyOrganisationalUnitName(domain, Model.DeviceProfile.OrganisationalUnit));
#line default
@@ -1800,7 +1845,7 @@ WriteLiteral(" ");
WriteLiteral("\r\n </span>\r\n");
#line 654 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 667 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1809,7 +1854,7 @@ WriteLiteral("\r\n </span>\r\n");
WriteLiteral(" </div>\r\n");
#line 656 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 669 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1822,13 +1867,13 @@ WriteLiteral(" style=\"margin-top: 8px;\"");
WriteLiteral(">\r\n");
#line 658 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 671 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 658 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 671 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig)
{
@@ -1844,7 +1889,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 660 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 673 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1865,7 +1910,7 @@ WriteLiteral(@">
$.getJSON('");
#line 667 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 680 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceOrganisationalUnit(Model.DeviceProfile.Id)));
@@ -1885,7 +1930,7 @@ WriteLiteral(@"', data, function (response, result) {
");
#line 678 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 691 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
@@ -1902,7 +1947,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 681 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 694 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1911,7 +1956,7 @@ WriteLiteral(" ");
WriteLiteral(" disabled=\"disabled\" />\r\n");
#line 682 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 695 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -1927,7 +1972,7 @@ WriteLiteral(">\r\n Enforce Organisational Unit\r\n
WriteLiteral(" ");
#line 686 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 699 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
@@ -1937,7 +1982,7 @@ WriteLiteral("\r\n </div>\r\n </td>\r\n </tr>\r
"\n");
#line 692 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 705 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canDelete)
{
@@ -1992,7 +2037,7 @@ WriteLiteral(@">
");
#line 728 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 741 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -2005,13 +2050,13 @@ WriteLiteral(" class=\"actionBar\"");
WriteLiteral(">\r\n");
#line 730 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 743 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 730 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 743 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canDelete)
{
@@ -2019,14 +2064,14 @@ WriteLiteral(">\r\n");
#line default
#line hidden
#line 732 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 745 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.ActionLinkButton("Delete", MVC.API.DeviceProfile.Delete(Model.DeviceProfile.Id, true), "buttonDelete"));
#line default
#line hidden
#line 732 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 745 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -2036,7 +2081,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 734 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 747 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (Authorization.Has(Claims.Device.Actions.Export))
{
@@ -2044,14 +2089,14 @@ WriteLiteral(" ");
#line default
#line hidden
#line 736 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 749 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.ActionLinkButton("Export Devices", MVC.API.DeviceProfile.ExportDevices(Model.DeviceProfile.Id)));
#line default
#line hidden
#line 736 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 749 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -2061,7 +2106,7 @@ WriteLiteral(" ");
WriteLiteral(" ");
#line 738 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 751 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (Authorization.Has(Claims.Device.Search))
{
@@ -2069,14 +2114,14 @@ WriteLiteral(" ");
#line default
#line hidden
#line 740 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 753 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.ActionLinkButton("View Devices", MVC.Search.Query(Model.DeviceProfile.Id.ToString(), "DeviceProfile")));
#line default
#line hidden
#line 740 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 753 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Enrolment
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Enrolment
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Expressions
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.JobQueue
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.JobQueue
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Logging
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
#line 2 "..\..\Areas\Config\Views\Logging\Index.cshtml"
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Logging
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Organisation
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Plugins
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
#line 2 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Plugins
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
#line 2 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Plugins
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views.Shared
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -3,8 +3,16 @@
Authorization.Require(Claims.Config.System.Show);
var canConfigProxy = Authorization.Has(Claims.Config.System.ConfigureProxy);
var canConfigAD = Authorization.Has(Claims.Config.System.ConfigureActiveDirectory);
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "System");
if (canConfigAD)
{
Html.BundleDeferred("~/Style/Fancytree");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Fancytree");
Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers");
}
}
<div class="form" style="width: 450px">
<table>
@@ -133,9 +141,296 @@
</tr>
</table>
</div>
<div class="form" style="width: 450px; margin-top: 15px;">
<h2>Active Directory</h2>
<table>
<tr>
<th style="width: 135px">Primary Domain:
</th>
<td>
<code><strong>@Model.ADPrimaryDomain.DnsName</strong> <span>[@Model.ADPrimaryDomain.NetBiosName]</span></code>
</td>
</tr>
<tr>
<th style="width: 135px">Additional Domains:
</th>
<td>
@if (Model.ADAdditionalDomains.Count > 0)
{
var adDomainFirst = Model.ADAdditionalDomains.First();
<code>@adDomainFirst.DnsName <span>[@adDomainFirst.NetBiosName]</span></code>
foreach (var adDomain in Model.ADAdditionalDomains.Skip(1))
{
<hr />
<div>
<code>@adDomain.DnsName <span>[@adDomain.NetBiosName]</span></code>
</div>
}
}
else
{
<span class="smallMessage">&lt;None&gt;</span>
}
</td>
</tr>
<tr>
<th style="width: 135px">Site:
</th>
<td>
<code><strong>@Model.ADSite.Name</strong></code>
<hr />
<div>
@if (Model.ADSiteServers.Count > 0)
{
<span>Servers:</span>
<ul class="none">
@foreach (var siteServer in Model.ADSiteServers)
{
var server = siteServer.Item1;
var reachable = siteServer.Item2;
<li>
<i class="fa @(reachable ? "fa-check success" : "fa-exclamation warning") fa-fw fa-lg" title="@(reachable ? "Reachable" : "Unavailable")"></i>&nbsp;<code>@(server.Name)</code>
</li>
}
</ul>
}
else
{
<div class="error">
<i class="fa fa-exclamation-circle fa-lg"></i>&nbsp;<span>None Found</span>
</div>
}
</div>
</td>
</tr>
<tr>
<th style="width: 135px">Forest:
</th>
<td>
@if (Model.ADForestServers == null)
{
<div>
@Html.CheckBoxFor(m => m.ADSearchEntireForest, new { disabled = "disabled" }) @Html.LabelFor(m => m.ADSearchEntireForest)
</div>
<div style="padding: 0.7em 0.7em;" class="ui-state-highlight ui-corner-all">
<i class="fa fa-info-circle information"></i>&nbsp;Forest servers are being retrieved, try refreshing this page in a moment.
</div>
}
else
{
if (canConfigAD)
{
var canSearchEntireForest = (Model.ADForestServers.Count <= Disco.Services.Interop.ActiveDirectory.ActiveDirectory.MaxForestServerSearch);
<div>
@if (!canSearchEntireForest)
{
@Html.CheckBoxFor(m => m.ADSearchEntireForest, new { disabled = "disabled" }) @Html.LabelFor(m => m.ADSearchEntireForest)
<div style="padding: 0.7em 0.7em;" class="ui-state-highlight ui-corner-all">
<i class="fa fa-exclamation-circle warning"></i>&nbsp;Disco will not search entire forests which consist of more than @(Disco.Services.Interop.ActiveDirectory.ActiveDirectory.MaxForestServerSearch) servers. Only servers within this site will be searched.
</div>
}
else
{
@Html.CheckBoxFor(m => m.ADSearchEntireForest) @Html.LabelFor(m => m.ADSearchEntireForest) @AjaxHelpers.AjaxLoader()
<div class="smallMessage">
If this setting is enabled, Disco will search all servers within the forest rather than only servers within this site.
</div>
<script>
$(function () {
document.DiscoFunctions.PropertyChangeHelper($('#ADSearchEntireForest'), null, '@(Url.Action(MVC.API.System.UpdateActiveDirectorySearchEntireForest()))', 'SearchEntireForest');
});
</script>
}
</div>
}
else
{
<div>
@Html.CheckBoxFor(m => m.ADSearchEntireForest, new { disabled = "disabled" }) @Html.LabelFor(m => m.ADSearchEntireForest)
<div class="smallMessage">
If this setting is enabled, Disco will search all servers within the forest rather than only servers within this site.
</div>
</div>
}
<div>
<hr />
<span>Servers:</span>
<ul id="Config_System_AD_ForestServers">
@foreach (var server in Model.ADForestServers.OrderBy(s => s))
{
<li><code>@server</code> @(Model.ADSiteServers.Count(ss => ss.Item1.Name.Equals(server, StringComparison.InvariantCultureIgnoreCase)) > 0 ? "[Site Server]" : null)</li>
}
</ul>
<script>
$(function () {
var toManyServers = 5;
var ul = $('#Config_System_AD_ForestServers');
var ulLi = ul.find('li');
if (ulLi.length > toManyServers) {
var liMore = $('<li>').append(
$('<a>').attr('href', '#')
.text('Show All Servers (' + (ulLi.length - toManyServers) + ' more)')
.click(function () {
$(this).closest('li').remove();
ul.find('li').show();
return false;
}))
.insertAfter(ulLi[(toManyServers - 1)]);
ulLi.each(function (i) {
if (i > (toManyServers - 1))
$(this).hide();
});
}
});
</script>
</div>
}
</td>
</tr>
<tr>
<th style="width: 135px">Search Scope:
</th>
<td>
@if (Model.ADSearchContainers != null && Model.ADSearchContainers.Count > 0)
{
<div>Searching is restricted to the following Organisational&nbsp;Unit containers</div>
<ul id="Config_System_AD_SearchScope_DistinguishedNames">
@foreach (var adContainer in Model.ADSearchContainers)
{
<li data-distinguishedname="@adContainer.Item1"><code>@adContainer.Item3</code></li>
}
</ul>
}
else
{
<div>No restrictions are in effect.</div>
<div class="smallMessage">When searching, the entire domain will be queried. This is suitable for most single-domain deployments.</div>
}
@if (canConfigAD)
{
<div>
<hr />
<a id="Config_System_AD_SearchScope_Update" href="#" class="button small">Update</a>
</div>
<div id="Config_System_AD_SearchScope_Dialog" class="dialog" title="Search Scope">
<div id="Config_System_AD_SearchScope_Tree" class="organisationalUnitTree">
</div>
@using (Html.BeginForm(MVC.API.System.UpdateActiveDirectorySearchScope(null, redirect: true)))
{
}
</div>
<script>
$(function () {
var $dialog, $tree, tree, distinguishedNames;
function expandNodeTree(node) {
var parent = node.parent;
if (parent) {
expandNodeTree(parent);
if (!parent.isExpanded())
parent.setExpanded(true, { noAnimation: true, noEvents: false });
}
}
function selectDistinguishedNames() {
if (!distinguishedNames) {
distinguishedNames = $('#Config_System_AD_SearchScope_DistinguishedNames')
.find('li')
.map(function () { return $(this).attr('data-distinguishedname'); }).get();
}
if (tree) {
tree.visit(function (node) {
if ($.inArray(node.key, distinguishedNames) >= 0) {
node.setSelected(true);
expandNodeTree(node);
} else if (node.isSelected()) {
node.setSelected(false);
}
});
}
}
function update() {
if (!$dialog) {
$dialog = $('#Config_System_AD_SearchScope_Dialog').dialog({
autoOpen: false,
buttons: null,
draggable: false,
modal: true,
resizable: false,
width: 500,
height: 500
});
$tree = $('#Config_System_AD_SearchScope_Tree');
$dialog.css('overflow', 'visible');
$tree.css('height', '100%');
$.getJSON('@(Url.Action(MVC.API.System.DomainOrganisationalUnits()))', null, function (data) {
tree = $tree.fancytree({
source: data,
checkbox: true,
selectMode: 2,
keyboard: false,
fx: null
}).fancytree('getTree');
tree.$container.css('position', 'relative');
// Set Buttons
$dialog.dialog('option', 'buttons', {
'Search Entire Forest': function () {
var $this = $(this);
$this.css('overflow', 'hidden');
$this.dialog("disable");
$this.dialog("option", "buttons", null);
var $form = $dialog.find('form');
$form.submit();
},
'Save': function () {
var $this = $(this);
$this.css('overflow', 'hidden');
$this.dialog("disable");
$this.dialog("option", "buttons", null);
var nodes = tree.getSelectedNodes();
var $form = $dialog.find('form');
$.each(nodes, function (i, node) {
$('<input>').attr({ 'type': 'hidden', 'name': 'Containers', 'value': node.key }).appendTo($form);
});
$form.submit();
}
});
// Select & Expand
selectDistinguishedNames();
tree.options.fx = { height: "toggle", duration: 200 };
});
}
selectDistinguishedNames();
$dialog.dialog('open');
return false;
}
$('#Config_System_AD_SearchScope_Update').click(update);
});
</script>
}
</td>
</tr>
</table>
</div>
@if (canConfigProxy)
{
using (Html.BeginForm())
using (Html.BeginForm(MVC.API.System.UpdateProxySettings()))
{
<div class="form" style="width: 450px; margin-top: 15px;">
<h2>Proxy Settings</h2>
File diff suppressed because it is too large Load Diff
+5
View File
@@ -33,6 +33,11 @@
</appSettings>
<system.web>
<compilation>
<assemblies>
<add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Areas.Config.Views
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -20,7 +20,7 @@ namespace Disco.Web.Areas.Public.Controllers
{
JobId = j.Id,
DeviceSerialNumber = j.DeviceSerialNumber,
DeviceComputerName = j.Device.ComputerName,
DeviceComputerName = j.Device.DeviceDomainId,
DeviceLocation = j.Device.Location,
DeviceProfileId = j.Device.DeviceProfileId,
DeviceAddressId = j.Device.DeviceProfile.DefaultOrganisationAddress,
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views.HeldDevices
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views.HeldDevices
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views.Public
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views.Public
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views.Public
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views.UserHeldDevices
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views.UserHeldDevices
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -28,6 +28,7 @@ namespace Disco.Web.Areas.Public.Views
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -203,7 +203,7 @@ namespace Disco.Web.Controllers
}
case "userid":
Authorization.Require(Claims.User.Search);
var user = Database.Users.FirstOrDefault(u => u.Id == term);
var user = Database.Users.FirstOrDefault(u => u.UserId == term);
if (user != null)
return RedirectToAction(MVC.User.Show(term));
else
+11 -2
View File
@@ -4,6 +4,7 @@ using Disco.Models.UI.User;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Authorization.Roles;
using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Plugins.Features.UIExtension;
using Disco.Services.Users;
using Disco.Services.Web;
@@ -29,8 +30,16 @@ namespace Disco.Web.Controllers
#region Show
[DiscoAuthorize(Claims.User.Show)]
public virtual ActionResult Show(string id)
public virtual ActionResult Show(string id, string Domain)
{
if (string.IsNullOrWhiteSpace(id))
throw new ArgumentNullException("id", "The User Id must be provided");
if (string.IsNullOrEmpty(Domain))
id = ActiveDirectory.PrimaryDomain.NetBiosName + @"\" + id;
else
id = Domain + @"\" + id;
var m = new Models.User.ShowModel();
Database.Configuration.LazyLoadingEnabled = true;
@@ -48,7 +57,7 @@ namespace Disco.Web.Controllers
m.User = Database.Users
.Include("DeviceUserAssignments.Device.DeviceModel").Include("UserAttachments")
.FirstOrDefault(um => um.Id == id);
.FirstOrDefault(um => um.UserId == id);
if (m.User == null)
throw new ArgumentException("Unknown User Id", "id");
+2
View File
@@ -196,6 +196,7 @@
<Compile Include="Areas\API\Models\AuthorizationRole\SubjectItem.cs" />
<Compile Include="Areas\API\Models\JobQueue\SubjectItem.cs" />
<Compile Include="Areas\API\Models\Job\DeviceHeldLocationModel.cs" />
<Compile Include="Areas\API\Models\System\DomainOrganisationalUnitsModel.cs" />
<Compile Include="Areas\Config\Controllers\AuthorizationRoleController.cs" />
<Compile Include="Areas\Config\Controllers\JobPreferencesController.cs" />
<Compile Include="Areas\Config\Controllers\JobQueueController.cs" />
@@ -543,6 +544,7 @@
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Extensions\T4MVCExtensions.cs" />
<Compile Include="Views\Job\JobParts\Queues.generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
+78
View File
@@ -0,0 +1,78 @@
using Disco.Services;
using Disco.Services.Interop.ActiveDirectory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Disco.Web.Controllers
{
public partial class UserController
{
internal static void T4MVCAddUserIdRouteValues(T4MVC_System_Web_Mvc_ActionResult callInfo, string UserId)
{
var splitId = UserExtensions.SplitUserId(UserId);
if (splitId.Item1 == null)
throw new ArgumentException("The User Id is not in the correct format ({Domain}\\{Id})", "id");
string userDomain;
if (splitId.Item1.Equals(ActiveDirectory.PrimaryDomain.NetBiosName, StringComparison.InvariantCultureIgnoreCase))
userDomain = null; // Url doesn't contain Domain if it is the default.
else
userDomain = splitId.Item1;
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", splitId.Item2);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Domain", userDomain);
}
[NonAction]
public virtual System.Web.Mvc.ActionResult Show(string id)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Show);
T4MVCAddUserIdRouteValues(callInfo, id);
return callInfo;
}
}
}
namespace Disco.Web.Areas.API.Controllers
{
public partial class UserController
{
[NonAction]
public virtual ActionResult AttachmentUpload(string id, string Comments)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AttachmentUpload);
Disco.Web.Controllers.UserController.T4MVCAddUserIdRouteValues(callInfo, id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Comments", Comments);
return callInfo;
}
[NonAction]
public virtual ActionResult Attachments(string id)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Attachments);
Disco.Web.Controllers.UserController.T4MVCAddUserIdRouteValues(callInfo, id);
return callInfo;
}
[NonAction]
public virtual ActionResult GeneratePdf(string id, string DocumentTemplateId)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdf);
Disco.Web.Controllers.UserController.T4MVCAddUserIdRouteValues(callInfo, id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DocumentTemplateId", DocumentTemplateId);
return callInfo;
}
}
}
+121 -41
View File
@@ -2122,6 +2122,7 @@ namespace Disco.Web.Controllers
public class ActionParamsClass_Show
{
public readonly string id = "id";
public readonly string Domain = "Domain";
}
static readonly ViewsClass s_views = new ViewsClass();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -2180,13 +2181,14 @@ namespace Disco.Web.Controllers
return callInfo;
}
partial void ShowOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id);
partial void ShowOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Domain);
public override System.Web.Mvc.ActionResult Show(string id)
public override System.Web.Mvc.ActionResult Show(string id, string Domain)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Show);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ShowOverride(callInfo, id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Domain", Domain);
ShowOverride(callInfo, id, Domain);
return callInfo;
}
@@ -4626,7 +4628,6 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string UpdateProvisionADAccount = "UpdateProvisionADAccount";
public readonly string UpdateAssignedUserLocalAdmin = "UpdateAssignedUserLocalAdmin";
public readonly string UpdateAllowUntrustedReimageJobEnrolment = "UpdateAllowUntrustedReimageJobEnrolment";
public readonly string OrganisationalUnits = "OrganisationalUnits";
public readonly string Delete = "Delete";
public readonly string Default = "Default";
public readonly string DefaultAddDeviceOffline = "DefaultAddDeviceOffline";
@@ -4650,7 +4651,6 @@ namespace Disco.Web.Areas.API.Controllers
public const string UpdateProvisionADAccount = "UpdateProvisionADAccount";
public const string UpdateAssignedUserLocalAdmin = "UpdateAssignedUserLocalAdmin";
public const string UpdateAllowUntrustedReimageJobEnrolment = "UpdateAllowUntrustedReimageJobEnrolment";
public const string OrganisationalUnits = "OrganisationalUnits";
public const string Delete = "Delete";
public const string Default = "Default";
public const string DefaultAddDeviceOffline = "DefaultAddDeviceOffline";
@@ -5022,15 +5022,6 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo;
}
partial void OrganisationalUnitsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo);
public override System.Web.Mvc.ActionResult OrganisationalUnits()
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.OrganisationalUnits);
OrganisationalUnitsOverride(callInfo);
return callInfo;
}
partial void DeleteOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, bool? redirect);
public override System.Web.Mvc.ActionResult Delete(int id, bool? redirect)
@@ -9180,6 +9171,24 @@ namespace Disco.Web.Areas.API.Controllers
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateMultiSiteMode);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateActiveDirectorySearchScope()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateActiveDirectorySearchScope);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateActiveDirectorySearchEntireForest()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateActiveDirectorySearchEntireForest);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateProxySettings()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateProxySettings);
}
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public SystemController Actions { get { return MVC.API.System; } }
@@ -9204,6 +9213,10 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string UpdateOrganisationAddress = "UpdateOrganisationAddress";
public readonly string DeleteOrganisationAddress = "DeleteOrganisationAddress";
public readonly string UpdateMultiSiteMode = "UpdateMultiSiteMode";
public readonly string UpdateActiveDirectorySearchScope = "UpdateActiveDirectorySearchScope";
public readonly string UpdateActiveDirectorySearchEntireForest = "UpdateActiveDirectorySearchEntireForest";
public readonly string DomainOrganisationalUnits = "DomainOrganisationalUnits";
public readonly string UpdateProxySettings = "UpdateProxySettings";
}
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -9217,6 +9230,10 @@ namespace Disco.Web.Areas.API.Controllers
public const string UpdateOrganisationAddress = "UpdateOrganisationAddress";
public const string DeleteOrganisationAddress = "DeleteOrganisationAddress";
public const string UpdateMultiSiteMode = "UpdateMultiSiteMode";
public const string UpdateActiveDirectorySearchScope = "UpdateActiveDirectorySearchScope";
public const string UpdateActiveDirectorySearchEntireForest = "UpdateActiveDirectorySearchEntireForest";
public const string DomainOrganisationalUnits = "DomainOrganisationalUnits";
public const string UpdateProxySettings = "UpdateProxySettings";
}
@@ -9269,6 +9286,36 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string MultiSiteMode = "MultiSiteMode";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_UpdateActiveDirectorySearchScope s_params_UpdateActiveDirectorySearchScope = new ActionParamsClass_UpdateActiveDirectorySearchScope();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateActiveDirectorySearchScope UpdateActiveDirectorySearchScopeParams { get { return s_params_UpdateActiveDirectorySearchScope; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateActiveDirectorySearchScope
{
public readonly string Containers = "Containers";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_UpdateActiveDirectorySearchEntireForest s_params_UpdateActiveDirectorySearchEntireForest = new ActionParamsClass_UpdateActiveDirectorySearchEntireForest();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateActiveDirectorySearchEntireForest UpdateActiveDirectorySearchEntireForestParams { get { return s_params_UpdateActiveDirectorySearchEntireForest; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateActiveDirectorySearchEntireForest
{
public readonly string SearchEntireForest = "SearchEntireForest";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_UpdateProxySettings s_params_UpdateProxySettings = new ActionParamsClass_UpdateProxySettings();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateProxySettings UpdateProxySettingsParams { get { return s_params_UpdateProxySettings; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateProxySettings
{
public readonly string ProxyAddress = "ProxyAddress";
public readonly string ProxyPort = "ProxyPort";
public readonly string ProxyUsername = "ProxyUsername";
public readonly string ProxyPassword = "ProxyPassword";
public readonly string redirect = "redirect";
}
static readonly ViewsClass s_views = new ViewsClass();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ViewsClass Views { get { return s_views; } }
@@ -9383,6 +9430,51 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo;
}
partial void UpdateActiveDirectorySearchScopeOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, System.Collections.Generic.List<string> Containers, bool redirect);
public override System.Web.Mvc.ActionResult UpdateActiveDirectorySearchScope(System.Collections.Generic.List<string> Containers, bool redirect)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateActiveDirectorySearchScope);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Containers", Containers);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
UpdateActiveDirectorySearchScopeOverride(callInfo, Containers, redirect);
return callInfo;
}
partial void UpdateActiveDirectorySearchEntireForestOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, bool SearchEntireForest, bool redirect);
public override System.Web.Mvc.ActionResult UpdateActiveDirectorySearchEntireForest(bool SearchEntireForest, bool redirect)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateActiveDirectorySearchEntireForest);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "SearchEntireForest", SearchEntireForest);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
UpdateActiveDirectorySearchEntireForestOverride(callInfo, SearchEntireForest, redirect);
return callInfo;
}
partial void DomainOrganisationalUnitsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo);
public override System.Web.Mvc.ActionResult DomainOrganisationalUnits()
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.DomainOrganisationalUnits);
DomainOrganisationalUnitsOverride(callInfo);
return callInfo;
}
partial void UpdateProxySettingsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string ProxyAddress, int? ProxyPort, string ProxyUsername, string ProxyPassword, bool redirect);
public override System.Web.Mvc.ActionResult UpdateProxySettings(string ProxyAddress, int? ProxyPort, string ProxyUsername, string ProxyPassword, bool redirect)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateProxySettings);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ProxyAddress", ProxyAddress);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ProxyPort", ProxyPort);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ProxyUsername", ProxyUsername);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ProxyPassword", ProxyPassword);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
UpdateProxySettingsOverride(callInfo, ProxyAddress, ProxyPort, ProxyUsername, ProxyPassword, redirect);
return callInfo;
}
}
}
@@ -9529,6 +9621,7 @@ namespace Disco.Web.Areas.API.Controllers
public class ActionParamsClass_AttachmentUpload
{
public readonly string id = "id";
public readonly string Domain = "Domain";
public readonly string Comments = "Comments";
}
static readonly ActionParamsClass_Attachment s_params_Attachment = new ActionParamsClass_Attachment();
@@ -9546,6 +9639,7 @@ namespace Disco.Web.Areas.API.Controllers
public class ActionParamsClass_Attachments
{
public readonly string id = "id";
public readonly string Domain = "Domain";
}
static readonly ActionParamsClass_AttachmentRemove s_params_AttachmentRemove = new ActionParamsClass_AttachmentRemove();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -9562,6 +9656,7 @@ namespace Disco.Web.Areas.API.Controllers
public class ActionParamsClass_GeneratePdf
{
public readonly string id = "id";
public readonly string Domain = "Domain";
public readonly string DocumentTemplateId = "DocumentTemplateId";
}
static readonly ViewsClass s_views = new ViewsClass();
@@ -9613,14 +9708,15 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo;
}
partial void AttachmentUploadOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Comments);
partial void AttachmentUploadOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Domain, string Comments);
public override System.Web.Mvc.ActionResult AttachmentUpload(string id, string Comments)
public override System.Web.Mvc.ActionResult AttachmentUpload(string id, string Domain, string Comments)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AttachmentUpload);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Domain", Domain);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Comments", Comments);
AttachmentUploadOverride(callInfo, id, Comments);
AttachmentUploadOverride(callInfo, id, Domain, Comments);
return callInfo;
}
@@ -9634,13 +9730,14 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo;
}
partial void AttachmentsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id);
partial void AttachmentsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Domain);
public override System.Web.Mvc.ActionResult Attachments(string id)
public override System.Web.Mvc.ActionResult Attachments(string id, string Domain)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Attachments);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
AttachmentsOverride(callInfo, id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Domain", Domain);
AttachmentsOverride(callInfo, id, Domain);
return callInfo;
}
@@ -9654,14 +9751,15 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo;
}
partial void GeneratePdfOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string DocumentTemplateId);
partial void GeneratePdfOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string Domain, string DocumentTemplateId);
public override System.Web.Mvc.ActionResult GeneratePdf(string id, string DocumentTemplateId)
public override System.Web.Mvc.ActionResult GeneratePdf(string id, string Domain, string DocumentTemplateId)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GeneratePdf);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Domain", Domain);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DocumentTemplateId", DocumentTemplateId);
GeneratePdfOverride(callInfo, id, DocumentTemplateId);
GeneratePdfOverride(callInfo, id, Domain, DocumentTemplateId);
return callInfo;
}
@@ -11266,14 +11364,6 @@ namespace Disco.Web.Areas.Config.Controllers
}
static readonly ActionParamsClass_Index s_params_Index = new ActionParamsClass_Index();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_Index IndexParams { get { return s_params_Index; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_Index
{
public readonly string config = "config";
}
static readonly ViewsClass s_views = new ViewsClass();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ViewsClass Views { get { return s_views; } }
@@ -11304,16 +11394,6 @@ namespace Disco.Web.Areas.Config.Controllers
return callInfo;
}
partial void IndexOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, Disco.Web.Areas.Config.Models.SystemConfig.IndexModel config);
public override System.Web.Mvc.ActionResult Index(Disco.Web.Areas.Config.Models.SystemConfig.IndexModel config)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Index);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "config", config);
IndexOverride(callInfo, config);
return callInfo;
}
}
}
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device.DeviceParts
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device.DeviceParts
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -31,7 +31,7 @@
{ @da.DocumentTemplate.Description}
else
{ @da.Comments }}
</span><span class="author">@da.TechUser.ToString()</span>@if (canRemoveAnyAttachments || (canRemoveOwnAttachments && da.TechUserId == CurrentUser.Id))
</span><span class="author">@da.TechUser.ToString()</span>@if (canRemoveAnyAttachments || (canRemoveOwnAttachments && da.TechUserId == CurrentUser.UserId))
{<text><span class="remove fa fa-times-circle"></span></text>}<span class="timestamp" title="@da.Timestamp.ToFullDateTime()" data-livestamp="@da.Timestamp.ToUnixEpoc()">@da.Timestamp.ToFullDateTime()</span>
</a>
}
@@ -125,7 +125,7 @@
}
else if (canRemoveOwnAttachments)
{
<text>buildAttachment(a, (a.AuthorId === '@(CurrentUser.Id)'), quick);</text>
<text>buildAttachment(a, (a.AuthorId === '@(CurrentUser.UserId)'), quick);</text>
}
else
{
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -246,7 +246,7 @@ WriteLiteral("</span>");
#line 34 "..\..\Views\Device\DeviceParts\_Resources.cshtml"
if (canRemoveAnyAttachments || (canRemoveOwnAttachments && da.TechUserId == CurrentUser.Id))
if (canRemoveAnyAttachments || (canRemoveOwnAttachments && da.TechUserId == CurrentUser.UserId))
{
#line default
@@ -267,14 +267,14 @@ WriteLiteral("<span");
WriteLiteral(" class=\"timestamp\"");
WriteAttribute("title", Tuple.Create(" title=\"", 2144), Tuple.Create("\"", 2182)
WriteAttribute("title", Tuple.Create(" title=\"", 2148), Tuple.Create("\"", 2186)
#line 35 "..\..\Views\Device\DeviceParts\_Resources.cshtml"
, Tuple.Create(Tuple.Create("", 2152), Tuple.Create<System.Object, System.Int32>(da.Timestamp.ToFullDateTime()
, Tuple.Create(Tuple.Create("", 2156), Tuple.Create<System.Object, System.Int32>(da.Timestamp.ToFullDateTime()
#line default
#line hidden
, 2152), false)
, 2156), false)
);
WriteLiteral(" data-livestamp=\"");
@@ -506,7 +506,7 @@ WriteLiteral("buildAttachment(a, (a.AuthorId === \'");
#line 128 "..\..\Views\Device\DeviceParts\_Resources.cshtml"
Write(CurrentUser.Id);
Write(CurrentUser.UserId);
#line default
@@ -13,7 +13,7 @@
<tr>
<td><span title="Computer Name">Name:</span>
</td>
<td>@if (string.IsNullOrWhiteSpace(Model.Device.ComputerName))
<td>@if (string.IsNullOrWhiteSpace(Model.Device.DeviceDomainId))
{
<span id="Device_Show_Details_Asset_NameUnknown" title="Computer Name" class="smallMessage">&lt;Unknown/Not Allocated&gt;</span>
}
@@ -23,6 +23,19 @@
}
</td>
</tr>
<tr>
<td><span title="Domain Name">Domain:</span>
</td>
<td>@if (string.IsNullOrWhiteSpace(Model.Device.DeviceDomainId))
{
<span id="Device_Show_Details_Asset_DomainUnknown" title="Computer Domain" class="smallMessage">&lt;Unknown/Not Allocated&gt;</span>
}
else
{
<h4 id="Device_Show_Details_Asset_Domain" title="Computer Domain">@Model.Device.ComputerDomainName</h4>
}
</td>
</tr>
<tr>
<td>Asset:</td>
<td>
@@ -178,14 +191,14 @@
<div id="Device_Show_User_DisplayName" title="Display Name">
@if (Authorization.Has(Claims.User.Show))
{
@Html.ActionLink(assignedUser.DisplayName, MVC.User.Show(assignedUser.Id))
@Html.ActionLink(assignedUser.DisplayName, MVC.User.Show(assignedUser.UserId))
}
else
{
@assignedUser.DisplayName
}
</div>
<div id="Device_Show_User_Id" title="Id">@assignedUser.Id</div>
<div id="Device_Show_User_Id" title="Id">@assignedUser.FriendlyId()</div>
@if (Authorization.Has(Claims.User.ShowDetails))
{
if (!string.IsNullOrWhiteSpace(assignedUser.PhoneNumber))
File diff suppressed because it is too large Load Diff
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -35,6 +35,7 @@ namespace Disco.Web.Views.Device
#line hidden
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
+2 -1
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
+2 -1
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.InitialConfig
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.InitialConfig
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.InitialConfig
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.InitialConfig
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.InitialConfig
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.InitialConfig
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.InitialConfig
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;

Some files were not shown because too many files have changed in this diff Show More