Feature #19: Allow auto unauthenticated enrolment

This commit is contained in:
Gary Sharp
2013-10-29 12:26:33 +11:00
parent 10a38af08b
commit 94c7cae443
13 changed files with 558 additions and 102 deletions
+14
View File
@@ -356,10 +356,24 @@ namespace Disco.BI.DeviceBI
else else
{ {
if (RepoDevice == null) if (RepoDevice == null)
{
throw new EnrolSafeException(string.Format("Unknown Device Serial Number (SN: '{0}')", Request.DeviceSerialNumber)); throw new EnrolSafeException(string.Format("Unknown Device Serial Number (SN: '{0}')", Request.DeviceSerialNumber));
}
if (!RepoDevice.AllowUnauthenticatedEnrol) if (!RepoDevice.AllowUnauthenticatedEnrol)
{
if (RepoDevice.DeviceProfile.AllowUntrustedReimageJobEnrolment)
{
if (Database.Jobs.Count(j => j.DeviceSerialNumber == RepoDevice.SerialNumber && j.JobTypeId == JobType.JobTypeIds.SImg && !j.ClosedDate.HasValue) == 0)
{
throw new EnrolSafeException(string.Format("Device has no open 'Software - Reimage' job (SN: '{0}')", Request.DeviceSerialNumber));
}
}
else
{
throw new EnrolSafeException(string.Format("Device isn't allowed an Unauthenticated Enrolment (SN: '{0}')", Request.DeviceSerialNumber)); throw new EnrolSafeException(string.Format("Device isn't allowed an Unauthenticated Enrolment (SN: '{0}')", Request.DeviceSerialNumber));
} }
}
}
if (Request.DeviceIsPartOfDomain && !string.IsNullOrWhiteSpace(Request.DeviceComputerName)) if (Request.DeviceIsPartOfDomain && !string.IsNullOrWhiteSpace(Request.DeviceComputerName))
{ {
EnrolmentLog.LogSessionProgress(sessionId, 20, "Loading Active Directory Computer Account"); EnrolmentLog.LogSessionProgress(sessionId, 20, "Loading Active Directory Computer Account");
+8 -1
View File
@@ -122,6 +122,10 @@
<Compile Include="Migrations\201310280657528_DBv10.Designer.cs"> <Compile Include="Migrations\201310280657528_DBv10.Designer.cs">
<DependentUpon>201310280657528_DBv10.cs</DependentUpon> <DependentUpon>201310280657528_DBv10.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Migrations\201310282325491_DBv11.cs" />
<Compile Include="Migrations\201310282325491_DBv11.Designer.cs">
<DependentUpon>201310282325491_DBv11.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" /> <Compile Include="Migrations\Configuration.cs" />
<Compile Include="Migrations\DiscoDataMigrator.cs" /> <Compile Include="Migrations\DiscoDataMigrator.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
@@ -167,6 +171,9 @@
<EmbeddedResource Include="Migrations\201310280657528_DBv10.resx"> <EmbeddedResource Include="Migrations\201310280657528_DBv10.resx">
<DependentUpon>201310280657528_DBv10.cs</DependentUpon> <DependentUpon>201310280657528_DBv10.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Migrations\201310282325491_DBv11.resx">
<DependentUpon>201310282325491_DBv11.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -180,7 +187,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions> <ProjectExtensions>
<VisualStudio> <VisualStudio>
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_StartDate="2011/7/1" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildAction="Both" /> <UserProperties BuildVersion_BuildAction="Both" BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
</VisualStudio> </VisualStudio>
</ProjectExtensions> </ProjectExtensions>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" /> <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
+27
View File
@@ -0,0 +1,27 @@
// <auto-generated />
namespace Disco.Data.Migrations
{
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
public sealed partial class DBv11 : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(DBv11));
string IMigrationMetadata.Id
{
get { return "201310282325491_DBv11"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,18 @@
namespace Disco.Data.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class DBv11 : DbMigration
{
public override void Up()
{
AddColumn("dbo.DeviceProfiles", "AllowUntrustedReimageJobEnrolment", c => c.Boolean(nullable: false, defaultValue: false));
}
public override void Down()
{
DropColumn("dbo.DeviceProfiles", "AllowUntrustedReimageJobEnrolment");
}
}
}
File diff suppressed because one or more lines are too long
@@ -45,6 +45,8 @@ namespace Disco.Models.Repository
public bool AssignedUserLocalAdmin { get; set; } public bool AssignedUserLocalAdmin { get; set; }
public bool AllowUntrustedReimageJobEnrolment { get; set; }
public virtual IList<Device> Devices { get; set; } public virtual IList<Device> Devices { get; set; }
public override string ToString() public override string ToString()
@@ -23,6 +23,7 @@ namespace Disco.Web.Areas.API.Controllers
const string pEnforceOrganisationalUnit = "enforceorganisationalunit"; const string pEnforceOrganisationalUnit = "enforceorganisationalunit";
const string pProvisionADAccount = "provisionadaccount"; const string pProvisionADAccount = "provisionadaccount";
const string pAssignedUserLocalAdmin = "assigneduserlocaladmin"; const string pAssignedUserLocalAdmin = "assigneduserlocaladmin";
const string pAllowUntrustedReimageJobEnrolment = "allowuntrustedreimagejobrnrolment";
[DiscoAuthorize(Claims.Config.DeviceProfile.Configure)] [DiscoAuthorize(Claims.Config.DeviceProfile.Configure)]
public virtual ActionResult Update(int id, string key, string value = null, Nullable<bool> redirect = null) public virtual ActionResult Update(int id, string key, string value = null, Nullable<bool> redirect = null)
@@ -77,6 +78,9 @@ namespace Disco.Web.Areas.API.Controllers
case pAssignedUserLocalAdmin: case pAssignedUserLocalAdmin:
UpdateAssignedUserLocalAdmin(deviceProfile, value); UpdateAssignedUserLocalAdmin(deviceProfile, value);
break; break;
case pAllowUntrustedReimageJobEnrolment:
UpdateAllowUntrustedReimageJobEnrolment(deviceProfile, value);
break;
default: default:
throw new Exception("Invalid Update Key"); throw new Exception("Invalid Update Key");
} }
@@ -173,6 +177,11 @@ namespace Disco.Web.Areas.API.Controllers
return Update(id, pAssignedUserLocalAdmin, AssignedUserLocalAdmin, redirect); return Update(id, pAssignedUserLocalAdmin, AssignedUserLocalAdmin, redirect);
} }
[DiscoAuthorize(Claims.Config.DeviceProfile.Configure)]
public virtual ActionResult UpdateAllowUntrustedReimageJobEnrolment(int id, string AllowUntrustedReimageJobEnrolment = null, Nullable<bool> redirect = null)
{
return Update(id, pAllowUntrustedReimageJobEnrolment, AllowUntrustedReimageJobEnrolment, redirect);
}
#endregion #endregion
#region Update Properties #region Update Properties
@@ -340,6 +349,19 @@ namespace Disco.Web.Areas.API.Controllers
} }
throw new Exception("Invalid Boolean Value"); throw new Exception("Invalid Boolean Value");
} }
private void UpdateAllowUntrustedReimageJobEnrolment(DeviceProfile deviceProfile, string AllowUntrustedReimageJobEnrolment)
{
bool bValue;
if (bool.TryParse(AllowUntrustedReimageJobEnrolment, out bValue))
{
deviceProfile.AllowUntrustedReimageJobEnrolment = bValue;
Database.SaveChanges();
return;
}
throw new Exception("Invalid Boolean Value");
}
#endregion #endregion
[DiscoAuthorize(Claims.Config.DeviceProfile.Configure)] [DiscoAuthorize(Claims.Config.DeviceProfile.Configure)]
@@ -14,10 +14,10 @@
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-DynaTree"); Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-DynaTree");
} }
} }
<div id="configurationDeviceProfileShow" class="form" style="width: 600px"> <div id="configurationDeviceProfileShow" class="form" style="width: 640px">
<table> <table>
<tr> <tr>
<th style="width: 230px;">Id: <th style="width: 170px;">Id:
</th> </th>
<td> <td>
@Html.DisplayFor(model => model.DeviceProfile.Id) @Html.DisplayFor(model => model.DeviceProfile.Id)
@@ -322,7 +322,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<th>Computer Name Template Expression: <th>Computer Name<br />Template Expression:
</th> </th>
<td>@if (canConfig && canConfigExpression) <td>@if (canConfig && canConfigExpression)
{ {
@@ -371,16 +371,16 @@
} }
else else
{ {
if (string.IsNullOrWhiteSpace(Model.DeviceProfile.ComputerNameTemplate)) <div id="displayComputerNameTemplate" class="code">
@if (string.IsNullOrWhiteSpace(Model.DeviceProfile.ComputerNameTemplate))
{ {
<span class="smallMessage">&lt;None Specified&gt;</span> <span class="smallMessage">&lt;None Specified&gt;</span>
} }
else else
{ {
<div class="code">
@Model.DeviceProfile.ComputerNameTemplate @Model.DeviceProfile.ComputerNameTemplate
</div>
} }
</div>
} }
<div style="margin-top: 8px;"> <div style="margin-top: 8px;">
@if (canConfig) @if (canConfig)
@@ -419,7 +419,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<th>Active Directory</th> <th>Policies</th>
<td> <td>
<div> <div>
@if (canConfig) @if (canConfig)
@@ -483,6 +483,37 @@
</label> </label>
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
</div> </div>
<div style="margin-top: 8px;">
@if (canConfig)
{
<input id="DeviceProfile_AllowUntrustedReimageJobEnrolment" type="checkbox" @(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : null)/>
<script type="text/javascript">
$(function () {
$('#DeviceProfile_AllowUntrustedReimageJobEnrolment').click(function () {
var $this = $(this);
var $ajaxLoading = $this.nextAll('.ajaxLoading').show();
var data = { AllowUntrustedReimageJobEnrolment: $this.is(':checked') };
$.getJSON('@Url.Action(MVC.API.DeviceProfile.UpdateAllowUntrustedReimageJobEnrolment(Model.DeviceProfile.Id))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Allow Untrusted Reimage Job Enrolment:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
});
});
</script>
}
else
{
<input id="DeviceProfile_AllowUntrustedReimageJobEnrolment" type="checkbox" @(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)) disabled="disabled" />
}
<label for="DeviceProfile_AllowUntrustedReimageJobEnrolment">
Allow Untrusted Enrolment Where a <span class="code">'Software - Reimage'</span> Job is Open
</label>
@AjaxHelpers.AjaxLoader()
</div>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -491,9 +522,9 @@
<td>@if (canConfig) <td>@if (canConfig)
{ {
@Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit) @Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit)
<div id="displayOrganisationalUnit"> <div id="displayOrganisationalUnit" class="code">
</div> </div>
<a id="changeOrganisationalUnit" href="#">Change</a>@AjaxHelpers.AjaxLoader() <a id="changeOrganisationalUnit" href="#" class="button small">Change</a>@AjaxHelpers.AjaxLoader()
<div id="dialogOrganisationalUnit" title="Default Organisational Unit"> <div id="dialogOrganisationalUnit" title="Default Organisational Unit">
<div id="treeOrganisationalUnit"> <div id="treeOrganisationalUnit">
</div> </div>
@@ -610,7 +641,8 @@
} }
else else
{ {
if (string.IsNullOrEmpty(Model.DeviceProfile.OrganisationalUnit)) <div id="displayOrganisationalUnit" class="code">
@if (string.IsNullOrEmpty(Model.DeviceProfile.OrganisationalUnit))
{ {
<span>{Default Computers Container}</span> <span>{Default Computers Container}</span>
} }
@@ -620,6 +652,7 @@
@string.Join(" > ", Model.DeviceProfile.OrganisationalUnit.Split(',').Select(s => s.Substring(3)).Reverse()) @string.Join(" > ", Model.DeviceProfile.OrganisationalUnit.Split(',').Select(s => s.Substring(3)).Reverse())
</span> </span>
} }
</div>
} }
<div style="margin-top: 8px;"> <div style="margin-top: 8px;">
@if (canConfig) @if (canConfig)
@@ -68,11 +68,11 @@ WriteLiteral(" id=\"configurationDeviceProfileShow\"");
WriteLiteral(" class=\"form\""); WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 600px\""); WriteLiteral(" style=\"width: 640px\"");
WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th"); WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th");
WriteLiteral(" style=\"width: 230px;\""); WriteLiteral(" style=\"width: 170px;\"");
WriteLiteral(">Id:\r\n </th>\r\n <td>\r\n"); WriteLiteral(">Id:\r\n </th>\r\n <td>\r\n");
@@ -895,8 +895,8 @@ WriteLiteral(">&lt;None Allocated&gt;</span>\r\n");
#line default #line default
#line hidden #line hidden
WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th>Computer Name Tem" + WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th>Computer Name<br " +
"plate Expression:\r\n </th>\r\n <td>"); "/>Template Expression:\r\n </th>\r\n <td>");
#line 327 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 327 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
@@ -952,14 +952,14 @@ WriteLiteral(" <a");
WriteLiteral(" id=\"expressionBrowserAnchor\""); WriteLiteral(" id=\"expressionBrowserAnchor\"");
WriteAttribute("href", Tuple.Create(" href=\"", 16256), Tuple.Create("\"", 16325) WriteAttribute("href", Tuple.Create(" href=\"", 16261), Tuple.Create("\"", 16330)
#line 332 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 332 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
, Tuple.Create(Tuple.Create("", 16263), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()) , Tuple.Create(Tuple.Create("", 16268), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser())
#line default #line default
#line hidden #line hidden
, 16263), false) , 16268), false)
); );
WriteLiteral(">&nbsp;</a>\r\n"); WriteLiteral(">&nbsp;</a>\r\n");
@@ -1022,6 +1022,26 @@ WriteLiteral(@"',
} }
else else
{ {
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"displayComputerNameTemplate\"");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n");
#line 375 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 375 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (string.IsNullOrWhiteSpace(Model.DeviceProfile.ComputerNameTemplate)) if (string.IsNullOrWhiteSpace(Model.DeviceProfile.ComputerNameTemplate))
{ {
@@ -1035,7 +1055,7 @@ WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">&lt;None Specified&gt;</span>\r\n"); WriteLiteral(">&lt;None Specified&gt;</span>\r\n");
#line 377 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 378 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
else else
{ {
@@ -1043,14 +1063,6 @@ WriteLiteral(">&lt;None Specified&gt;</span>\r\n");
#line default #line default
#line hidden #line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 381 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 381 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.ComputerNameTemplate); Write(Model.DeviceProfile.ComputerNameTemplate);
@@ -1058,11 +1070,18 @@ WriteLiteral(" ");
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </div>\r\n");
#line 381 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line 383 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
#line default
#line hidden
WriteLiteral(" </div>\r\n");
#line 384 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
@@ -1192,16 +1211,10 @@ WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(" style=\"margin-top: 8px;\""); WriteLiteral(" style=\"margin-top: 8px;\"");
WriteLiteral(@"> WriteLiteral(">\r\n Note: Computer names are only changed when Active Director" +
Note: Computer names are only changed when Active Directory accounts are provisioned. "y accounts are provisioned.\r\n </div>\r\n </td>\r\n " +
</div> "</tr>\r\n <tr>\r\n <th>Policies</th>\r\n <td>\r\n " +
</td> " <div>\r\n");
</tr>
<tr>
<th>Active Directory</th>
<td>
<div>
");
#line 425 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 425 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
@@ -1431,13 +1444,134 @@ WriteLiteral(" ");
Write(AjaxHelpers.AjaxLoader()); Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n <div");
WriteLiteral(" style=\"margin-top: 8px;\"");
WriteLiteral(">\r\n");
#line 487 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 487 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig)
{
#line default
#line hidden
WriteLiteral(" <input");
WriteLiteral(" id=\"DeviceProfile_AllowUntrustedReimageJobEnrolment\"");
WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 489 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : null);
#line default
#line hidden
WriteLiteral("/>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
$('#DeviceProfile_AllowUntrustedReimageJobEnrolment').click(function () {
var $this = $(this);
var $ajaxLoading = $this.nextAll('.ajaxLoading').show();
var data = { AllowUntrustedReimageJobEnrolment: $this.is(':checked') };
$.getJSON('");
#line 496 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateAllowUntrustedReimageJobEnrolment(Model.DeviceProfile.Id)));
#line default
#line hidden
WriteLiteral(@"', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Allow Untrusted Reimage Job Enrolment:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
});
});
</script>
");
#line 507 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <input");
WriteLiteral(" id=\"DeviceProfile_AllowUntrustedReimageJobEnrolment\"");
WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" ");
#line 510 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
#line default
#line hidden
WriteLiteral(" disabled=\"disabled\" />\r\n");
#line 511 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
}
#line default
#line hidden
WriteLiteral(" <label");
WriteLiteral(" for=\"DeviceProfile_AllowUntrustedReimageJobEnrolment\"");
WriteLiteral(">\r\n Allow Untrusted Enrolment Where a <span");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\'Software - Reimage\'</span> Job is Open\r\n </label>\r\n");
WriteLiteral(" ");
#line 515 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n " + 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>Default Organisational Unit:\r\n </th>\r\n <td>");
#line 491 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 522 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig) if (canConfig)
{ {
@@ -1445,14 +1579,14 @@ WriteLiteral("\r\n </div>\r\n </td>\r\n </tr>\r
#line default #line default
#line hidden #line hidden
#line 493 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 524 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit)); Write(Html.HiddenFor(model => model.DeviceProfile.OrganisationalUnit));
#line default #line default
#line hidden #line hidden
#line 493 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 524 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
@@ -1462,6 +1596,8 @@ WriteLiteral(" <div");
WriteLiteral(" id=\"displayOrganisationalUnit\""); WriteLiteral(" id=\"displayOrganisationalUnit\"");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n </div>\r\n"); WriteLiteral(">\r\n </div>\r\n");
WriteLiteral(" <a"); WriteLiteral(" <a");
@@ -1470,23 +1606,25 @@ WriteLiteral(" id=\"changeOrganisationalUnit\"");
WriteLiteral(" href=\"#\""); WriteLiteral(" href=\"#\"");
WriteLiteral(" class=\"button small\"");
WriteLiteral(">Change</a>"); WriteLiteral(">Change</a>");
#line 496 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 527 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default #line default
#line hidden #line hidden
#line 496 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 527 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader()); Write(AjaxHelpers.AjaxLoader());
#line default #line default
#line hidden #line hidden
#line 496 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 527 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
@@ -1532,7 +1670,7 @@ WriteLiteral(@">
$.getJSON('"); $.getJSON('");
#line 522 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 553 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateOrganisationalUnit(Model.DeviceProfile.Id, null))); Write(Url.Action(MVC.API.DeviceProfile.UpdateOrganisationalUnit(Model.DeviceProfile.Id, null)));
@@ -1573,7 +1711,7 @@ WriteLiteral("\', data, function (response, result) {\r\n
"getJSON(\'"); "getJSON(\'");
#line 571 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 602 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.OrganisationalUnits())); Write(Url.Action(MVC.API.DeviceProfile.OrganisationalUnits()));
@@ -1606,10 +1744,30 @@ WriteLiteral("\', null, function (data) {\r\n var
" });\r\n </script>\r\n"); " });\r\n </script>\r\n");
#line 610 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 641 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
else else
{ {
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"displayOrganisationalUnit\"");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n");
#line 645 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default
#line hidden
#line 645 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (string.IsNullOrEmpty(Model.DeviceProfile.OrganisationalUnit)) if (string.IsNullOrEmpty(Model.DeviceProfile.OrganisationalUnit))
{ {
@@ -1619,7 +1777,7 @@ WriteLiteral("\', null, function (data) {\r\n var
WriteLiteral(" <span>{Default Computers Container}</span>\r\n"); WriteLiteral(" <span>{Default Computers Container}</span>\r\n");
#line 616 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 648 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
else else
{ {
@@ -1632,7 +1790,7 @@ WriteLiteral(" <span>\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 620 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 652 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(string.Join(" > ", Model.DeviceProfile.OrganisationalUnit.Split(',').Select(s => s.Substring(3)).Reverse())); Write(string.Join(" > ", Model.DeviceProfile.OrganisationalUnit.Split(',').Select(s => s.Substring(3)).Reverse()));
@@ -1641,8 +1799,16 @@ WriteLiteral(" ");
WriteLiteral("\r\n </span>\r\n"); WriteLiteral("\r\n </span>\r\n");
#line 622 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 654 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
#line default
#line hidden
WriteLiteral(" </div>\r\n");
#line 656 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
@@ -1655,13 +1821,13 @@ WriteLiteral(" style=\"margin-top: 8px;\"");
WriteLiteral(">\r\n"); WriteLiteral(">\r\n");
#line 625 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 658 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default #line default
#line hidden #line hidden
#line 625 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 658 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canConfig) if (canConfig)
{ {
@@ -1677,7 +1843,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" "); WriteLiteral(" ");
#line 627 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 660 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1698,7 +1864,7 @@ WriteLiteral(@">
$.getJSON('"); $.getJSON('");
#line 634 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 667 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceOrganisationalUnit(Model.DeviceProfile.Id))); Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceOrganisationalUnit(Model.DeviceProfile.Id)));
@@ -1718,7 +1884,7 @@ WriteLiteral(@"', data, function (response, result) {
"); ");
#line 645 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 678 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
else else
{ {
@@ -1735,7 +1901,7 @@ WriteLiteral(" type=\"checkbox\"");
WriteLiteral(" "); WriteLiteral(" ");
#line 648 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 681 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty));
@@ -1744,7 +1910,7 @@ WriteLiteral(" ");
WriteLiteral(" disabled=\"disabled\" />\r\n"); WriteLiteral(" disabled=\"disabled\" />\r\n");
#line 649 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 682 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
@@ -1760,7 +1926,7 @@ WriteLiteral(">\r\n Enforce Organisational Unit\r\n
WriteLiteral(" "); WriteLiteral(" ");
#line 653 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 686 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(AjaxHelpers.AjaxLoader()); Write(AjaxHelpers.AjaxLoader());
@@ -1770,7 +1936,7 @@ WriteLiteral("\r\n </div>\r\n </td>\r\n </tr>\r
"\n"); "\n");
#line 659 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 692 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canDelete) if (canDelete)
{ {
@@ -1827,7 +1993,7 @@ WriteLiteral(@">
"); ");
#line 695 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 728 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
@@ -1840,13 +2006,13 @@ WriteLiteral(" class=\"actionBar\"");
WriteLiteral(">\r\n"); WriteLiteral(">\r\n");
#line 697 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 730 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
#line default #line default
#line hidden #line hidden
#line 697 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 730 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (canDelete) if (canDelete)
{ {
@@ -1854,14 +2020,14 @@ WriteLiteral(">\r\n");
#line default #line default
#line hidden #line hidden
#line 699 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 732 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.ActionLinkButton("Delete", MVC.API.DeviceProfile.Delete(Model.DeviceProfile.Id, true), "buttonDelete")); Write(Html.ActionLinkButton("Delete", MVC.API.DeviceProfile.Delete(Model.DeviceProfile.Id, true), "buttonDelete"));
#line default #line default
#line hidden #line hidden
#line 699 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 732 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
@@ -1871,7 +2037,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 701 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 734 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (Authorization.Has(Claims.Device.Actions.Export)) if (Authorization.Has(Claims.Device.Actions.Export))
{ {
@@ -1879,14 +2045,14 @@ WriteLiteral(" ");
#line default #line default
#line hidden #line hidden
#line 703 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 736 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.ActionLinkButton("Export Devices", MVC.API.DeviceProfile.ExportDevices(Model.DeviceProfile.Id))); Write(Html.ActionLinkButton("Export Devices", MVC.API.DeviceProfile.ExportDevices(Model.DeviceProfile.Id)));
#line default #line default
#line hidden #line hidden
#line 703 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 736 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
@@ -1896,7 +2062,7 @@ WriteLiteral(" ");
WriteLiteral(" "); WriteLiteral(" ");
#line 705 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 738 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
if (Authorization.Has(Claims.Device.Search)) if (Authorization.Has(Claims.Device.Search))
{ {
@@ -1904,14 +2070,14 @@ WriteLiteral(" ");
#line default #line default
#line hidden #line hidden
#line 707 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 740 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
Write(Html.ActionLinkButton("View Devices", MVC.Search.Query(Model.DeviceProfile.Id.ToString(), "DeviceProfile"))); Write(Html.ActionLinkButton("View Devices", MVC.Search.Query(Model.DeviceProfile.Id.ToString(), "DeviceProfile")));
#line default #line default
#line hidden #line hidden
#line 707 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line 740 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml"
} }
File diff suppressed because one or more lines are too long
+8
View File
@@ -197,6 +197,14 @@ table.deviceProfileTable {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACKUlEQVQ4jaWTTU4UURDHf/W6gXFgJlHZKFvEe3gBvYhewXgGTXRpOILhGESGgEuNjB9N/BgCTJjufvXhonsQ176kkqpFVf2q6v8kIvifV77b2wsAU6MsCop/LCEpISIkEUAoioSZYWZczOeUp6en1ZPHT+4FQXgQERDBMrZlHACOpIKcM23bMN3fr0pEcDfub21x9/YdIhwR6QoJWFY8wF2JAHfH3fh8MoUISoGugxnPnj1lZ2eHg/cHTL9MMTdy09K0LVkVy8rsbMZkMukpoRQRRBIAZ2czNjbWWV1bZXY2I6WCpq5pmgY1ZXoypaoqAEQSsSQQ6Tb67es3Xr9+Q103PHy4w+Fkgpoxn1/y8eMn6rq+3v4yp0TkOvpeVaytreHuHB4egggXFxdUVUVZrrKxXmJuLBYLut15PwIwGo1IqTuTSGJlJfj1+xdXV1eMx2PCnTZn3B1VRZY6kJ5gc3MTEenO1Cy4nF9SpILxaIya4maUqrgqdU8QEd0IArgbOStFmVFVNCuqirtjalgYboa5A3KDIAJEGA7XiQiauiZnZTgcXhdwM7RXX1ZlsbgCEUTkL8GD7W3UjMGtAUUqMDMiosf3niqTVbk1GLDUT5nV5Oj4A293d1G1647m3qvOb/hGBLRty9HxB8xM5OWrV49+/vj5wuk07x4CEZ2clxcWUuqclFIgiSIJo9Houdz8zufn56siMgBKoACkNwdcRDIRzWg8bpY5fwBYR4lbku/2TAAAAABJRU5ErkJggg==) /*Images/Actions/expressionBrowser.png*/; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACKUlEQVQ4jaWTTU4UURDHf/W6gXFgJlHZKFvEe3gBvYhewXgGTXRpOILhGESGgEuNjB9N/BgCTJjufvXhonsQ176kkqpFVf2q6v8kIvifV77b2wsAU6MsCop/LCEpISIkEUAoioSZYWZczOeUp6en1ZPHT+4FQXgQERDBMrZlHACOpIKcM23bMN3fr0pEcDfub21x9/YdIhwR6QoJWFY8wF2JAHfH3fh8MoUISoGugxnPnj1lZ2eHg/cHTL9MMTdy09K0LVkVy8rsbMZkMukpoRQRRBIAZ2czNjbWWV1bZXY2I6WCpq5pmgY1ZXoypaoqAEQSsSQQ6Tb67es3Xr9+Q103PHy4w+Fkgpoxn1/y8eMn6rq+3v4yp0TkOvpeVaytreHuHB4egggXFxdUVUVZrrKxXmJuLBYLut15PwIwGo1IqTuTSGJlJfj1+xdXV1eMx2PCnTZn3B1VRZY6kJ5gc3MTEenO1Cy4nF9SpILxaIya4maUqrgqdU8QEd0IArgbOStFmVFVNCuqirtjalgYboa5A3KDIAJEGA7XiQiauiZnZTgcXhdwM7RXX1ZlsbgCEUTkL8GD7W3UjMGtAUUqMDMiosf3niqTVbk1GLDUT5nV5Oj4A293d1G1647m3qvOb/hGBLRty9HxB8xM5OWrV49+/vj5wuk07x4CEZ2clxcWUuqclFIgiSIJo9Houdz8zufn56siMgBKoACkNwdcRDIRzWg8bpY5fwBYR4lbku/2TAAAAABJRU5ErkJggg==) /*Images/Actions/expressionBrowser.png*/;
text-decoration: none; text-decoration: none;
} }
#displayComputerNameTemplate {
margin: 0 0 6px 0;
}
#displayOrganisationalUnit {
margin: 0 0 6px 0;
}
} }
#configurationDocumentTemplateExpressionBrowser { #configurationDocumentTemplateExpressionBrowser {
File diff suppressed because one or more lines are too long
+30
View File
@@ -4478,6 +4478,12 @@ namespace Disco.Web.Areas.API.Controllers
} }
[NonAction] [NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateAllowUntrustedReimageJobEnrolment()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateAllowUntrustedReimageJobEnrolment);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult Delete() public virtual System.Web.Mvc.ActionResult Delete()
{ {
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Delete); return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Delete);
@@ -4529,6 +4535,7 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string UpdateEnforceOrganisationalUnit = "UpdateEnforceOrganisationalUnit"; public readonly string UpdateEnforceOrganisationalUnit = "UpdateEnforceOrganisationalUnit";
public readonly string UpdateProvisionADAccount = "UpdateProvisionADAccount"; public readonly string UpdateProvisionADAccount = "UpdateProvisionADAccount";
public readonly string UpdateAssignedUserLocalAdmin = "UpdateAssignedUserLocalAdmin"; public readonly string UpdateAssignedUserLocalAdmin = "UpdateAssignedUserLocalAdmin";
public readonly string UpdateAllowUntrustedReimageJobEnrolment = "UpdateAllowUntrustedReimageJobEnrolment";
public readonly string OrganisationalUnits = "OrganisationalUnits"; public readonly string OrganisationalUnits = "OrganisationalUnits";
public readonly string Delete = "Delete"; public readonly string Delete = "Delete";
public readonly string Default = "Default"; public readonly string Default = "Default";
@@ -4552,6 +4559,7 @@ namespace Disco.Web.Areas.API.Controllers
public const string UpdateEnforceOrganisationalUnit = "UpdateEnforceOrganisationalUnit"; public const string UpdateEnforceOrganisationalUnit = "UpdateEnforceOrganisationalUnit";
public const string UpdateProvisionADAccount = "UpdateProvisionADAccount"; public const string UpdateProvisionADAccount = "UpdateProvisionADAccount";
public const string UpdateAssignedUserLocalAdmin = "UpdateAssignedUserLocalAdmin"; public const string UpdateAssignedUserLocalAdmin = "UpdateAssignedUserLocalAdmin";
public const string UpdateAllowUntrustedReimageJobEnrolment = "UpdateAllowUntrustedReimageJobEnrolment";
public const string OrganisationalUnits = "OrganisationalUnits"; public const string OrganisationalUnits = "OrganisationalUnits";
public const string Delete = "Delete"; public const string Delete = "Delete";
public const string Default = "Default"; public const string Default = "Default";
@@ -4691,6 +4699,16 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string AssignedUserLocalAdmin = "AssignedUserLocalAdmin"; public readonly string AssignedUserLocalAdmin = "AssignedUserLocalAdmin";
public readonly string redirect = "redirect"; public readonly string redirect = "redirect";
} }
static readonly ActionParamsClass_UpdateAllowUntrustedReimageJobEnrolment s_params_UpdateAllowUntrustedReimageJobEnrolment = new ActionParamsClass_UpdateAllowUntrustedReimageJobEnrolment();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateAllowUntrustedReimageJobEnrolment UpdateAllowUntrustedReimageJobEnrolmentParams { get { return s_params_UpdateAllowUntrustedReimageJobEnrolment; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateAllowUntrustedReimageJobEnrolment
{
public readonly string id = "id";
public readonly string AllowUntrustedReimageJobEnrolment = "AllowUntrustedReimageJobEnrolment";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_Delete s_params_Delete = new ActionParamsClass_Delete(); static readonly ActionParamsClass_Delete s_params_Delete = new ActionParamsClass_Delete();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_Delete DeleteParams { get { return s_params_Delete; } } public ActionParamsClass_Delete DeleteParams { get { return s_params_Delete; } }
@@ -4902,6 +4920,18 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo; return callInfo;
} }
partial void UpdateAllowUntrustedReimageJobEnrolmentOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, string AllowUntrustedReimageJobEnrolment, bool? redirect);
public override System.Web.Mvc.ActionResult UpdateAllowUntrustedReimageJobEnrolment(int id, string AllowUntrustedReimageJobEnrolment, bool? redirect)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateAllowUntrustedReimageJobEnrolment);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "AllowUntrustedReimageJobEnrolment", AllowUntrustedReimageJobEnrolment);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
UpdateAllowUntrustedReimageJobEnrolmentOverride(callInfo, id, AllowUntrustedReimageJobEnrolment, redirect);
return callInfo;
}
partial void OrganisationalUnitsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo); partial void OrganisationalUnitsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo);
public override System.Web.Mvc.ActionResult OrganisationalUnits() public override System.Web.Mvc.ActionResult OrganisationalUnits()