feature: online activation
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
@model Disco.Web.Areas.Config.Models.SystemConfig.ActivateModel
|
||||
@{
|
||||
Authorization.Require(Claims.DiscoAdminAccount);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "System", MVC.Config.SystemConfig.Index(), "Activate");
|
||||
}
|
||||
|
||||
<div style="min-height: 300px;">
|
||||
<div class="form" style="width: 500px;">
|
||||
<h2><i class="fa fa-lg fa-cog fa-spin"></i> Testing Connectivity to Disco ICT Online Services</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<iframe name="callbackFrame" class="hidden">
|
||||
</iframe>
|
||||
|
||||
<form id="callbackSubmit" action="@Model.CallbackUrl" method="post" target="callbackFrame">
|
||||
<input type="hidden" name="callbackUrl" value="@(new Uri(Request.Url, Url.Action(MVC.API.Activation.TestCallback())))" />
|
||||
<input type="hidden" name="deploymentId" value="@Model.DeploymentId" />
|
||||
<input type="hidden" name="correlationId" value="@Model.CorrelationId" />
|
||||
<input type="hidden" name="userId" value="@Model.UserId" />
|
||||
</form>
|
||||
|
||||
@using (Html.BeginForm(MVC.API.Activation.Begin(), FormMethod.Post, new { id = "activationBegin"}))
|
||||
{
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
|
||||
<a id="callbackFailedUrl" href="@Url.Action(MVC.Config.SystemConfig.Index())" class="hidden"></a>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
const callbackForm = $('#callbackSubmit');
|
||||
const callbackFailedUrl = $('#callbackFailedUrl').attr('href');
|
||||
const timeout = window.setTimeout(function () {
|
||||
alert('A timeout occurred while communicating with Online Services. Please try a different device/browser or try again later.');
|
||||
window.location.href = callbackFailedUrl;
|
||||
}, 1000 * 35);
|
||||
window.activateCallbackResponse = function (deploymentId, correlationId, userId) {
|
||||
window.clearTimeout(timeout);
|
||||
|
||||
const originalDeploymentId = callbackForm.find('input[name="deploymentId"]').val();
|
||||
const originalCorrelationId = callbackForm.find('input[name="correlationId"]').val();
|
||||
const originalUserId = callbackForm.find('input[name="userId"]').val();
|
||||
|
||||
if (deploymentId !== originalDeploymentId || correlationId !== originalCorrelationId || userId !== originalUserId) {
|
||||
alert('Invalid response when communicating with Online Services. Please try a different device/browser or try again later.');
|
||||
window.location.href = callbackFailedUrl;
|
||||
}
|
||||
|
||||
$('#activationBegin').trigger('submit');
|
||||
};
|
||||
callbackForm.trigger('submit');
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,232 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Config.Views.SystemConfig
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Web;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/SystemConfig/Activate.cshtml")]
|
||||
public partial class Activate : Disco.Services.Web.WebViewPage<Disco.Web.Areas.Config.Models.SystemConfig.ActivateModel>
|
||||
{
|
||||
public Activate()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 2 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
|
||||
Authorization.Require(Claims.DiscoAdminAccount);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "System", MVC.Config.SystemConfig.Index(), "Activate");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n\r\n<div");
|
||||
|
||||
WriteLiteral(" style=\"min-height: 300px;\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"form\"");
|
||||
|
||||
WriteLiteral(" style=\"width: 500px;\"");
|
||||
|
||||
WriteLiteral(">\r\n <h2><i");
|
||||
|
||||
WriteLiteral(" class=\"fa fa-lg fa-cog fa-spin\"");
|
||||
|
||||
WriteLiteral("></i> Testing Connectivity to Disco ICT Online Services</h2>\r\n </div>\r\n</div>\r" +
|
||||
"\n\r\n<iframe");
|
||||
|
||||
WriteLiteral(" name=\"callbackFrame\"");
|
||||
|
||||
WriteLiteral(" class=\"hidden\"");
|
||||
|
||||
WriteLiteral(">\r\n</iframe>\r\n\r\n<form");
|
||||
|
||||
WriteLiteral(" id=\"callbackSubmit\"");
|
||||
|
||||
WriteAttribute("action", Tuple.Create(" action=\"", 563), Tuple.Create("\"", 590)
|
||||
|
||||
#line 17 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 572), Tuple.Create<System.Object, System.Int32>(Model.CallbackUrl
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 572), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" method=\"post\"");
|
||||
|
||||
WriteLiteral(" target=\"callbackFrame\"");
|
||||
|
||||
WriteLiteral(">\r\n <input");
|
||||
|
||||
WriteLiteral(" type=\"hidden\"");
|
||||
|
||||
WriteLiteral(" name=\"callbackUrl\"");
|
||||
|
||||
WriteAttribute("value", Tuple.Create(" value=\"", 674), Tuple.Create("\"", 752)
|
||||
|
||||
#line 18 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 682), Tuple.Create<System.Object, System.Int32>(new Uri(Request.Url, Url.Action(MVC.API.Activation.TestCallback()))
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 682), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" />\r\n <input");
|
||||
|
||||
WriteLiteral(" type=\"hidden\"");
|
||||
|
||||
WriteLiteral(" name=\"deploymentId\"");
|
||||
|
||||
WriteAttribute("value", Tuple.Create(" value=\"", 802), Tuple.Create("\"", 829)
|
||||
|
||||
#line 19 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 810), Tuple.Create<System.Object, System.Int32>(Model.DeploymentId
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 810), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" />\r\n <input");
|
||||
|
||||
WriteLiteral(" type=\"hidden\"");
|
||||
|
||||
WriteLiteral(" name=\"correlationId\"");
|
||||
|
||||
WriteAttribute("value", Tuple.Create(" value=\"", 880), Tuple.Create("\"", 908)
|
||||
|
||||
#line 20 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 888), Tuple.Create<System.Object, System.Int32>(Model.CorrelationId
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 888), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" />\r\n <input");
|
||||
|
||||
WriteLiteral(" type=\"hidden\"");
|
||||
|
||||
WriteLiteral(" name=\"userId\"");
|
||||
|
||||
WriteAttribute("value", Tuple.Create(" value=\"", 952), Tuple.Create("\"", 973)
|
||||
|
||||
#line 21 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 960), Tuple.Create<System.Object, System.Int32>(Model.UserId
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 960), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" />\r\n</form>\r\n\r\n");
|
||||
|
||||
|
||||
#line 24 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
using (Html.BeginForm(MVC.API.Activation.Begin(), FormMethod.Post, new { id = "activationBegin"}))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 26 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
Write(Html.AntiForgeryToken());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 26 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<a");
|
||||
|
||||
WriteLiteral(" id=\"callbackFailedUrl\"");
|
||||
|
||||
WriteAttribute("href", Tuple.Create(" href=\"", 1154), Tuple.Create("\"", 1205)
|
||||
|
||||
#line 29 "..\..\Areas\Config\Views\SystemConfig\Activate.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 1161), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Config.SystemConfig.Index())
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 1161), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" class=\"hidden\"");
|
||||
|
||||
WriteLiteral(@"></a>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
const callbackForm = $('#callbackSubmit');
|
||||
const callbackFailedUrl = $('#callbackFailedUrl').attr('href');
|
||||
const timeout = window.setTimeout(function () {
|
||||
alert('A timeout occurred while communicating with Online Services. Please try a different device/browser or try again later.');
|
||||
window.location.href = callbackFailedUrl;
|
||||
}, 1000 * 35);
|
||||
window.activateCallbackResponse = function (deploymentId, correlationId, userId) {
|
||||
window.clearTimeout(timeout);
|
||||
|
||||
const originalDeploymentId = callbackForm.find('input[name=""deploymentId""]').val();
|
||||
const originalCorrelationId = callbackForm.find('input[name=""correlationId""]').val();
|
||||
const originalUserId = callbackForm.find('input[name=""userId""]').val();
|
||||
|
||||
if (deploymentId !== originalDeploymentId || correlationId !== originalCorrelationId || userId !== originalUserId) {
|
||||
alert('Invalid response when communicating with Online Services. Please try a different device/browser or try again later.');
|
||||
window.location.href = callbackFailedUrl;
|
||||
}
|
||||
|
||||
$('#activationBegin').trigger('submit');
|
||||
};
|
||||
callbackForm.trigger('submit');
|
||||
});
|
||||
</script>
|
||||
");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
@@ -70,82 +70,104 @@
|
||||
</table>
|
||||
</div>
|
||||
<div class="form" style="width: 450px; margin-top: 15px;">
|
||||
<h2>License</h2>
|
||||
<h2>Activation & License</h2>
|
||||
<table>
|
||||
@{
|
||||
<tr>
|
||||
<th style="width: 135px">
|
||||
License:
|
||||
</th>
|
||||
<td>
|
||||
@using (Html.BeginForm(MVC.API.System.LicenseCheck(), FormMethod.Post))
|
||||
<tr>
|
||||
<th style="width: 135px">
|
||||
Activation:
|
||||
</th>
|
||||
<td>
|
||||
@if (Model.IsActivated)
|
||||
{
|
||||
@CommonHelpers.FriendlyDate(Model.ActivatedOn) <span>by @Model.ActivatedBy</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
using (Html.BeginForm(MVC.Config.SystemConfig.Activate(), FormMethod.Post))
|
||||
{
|
||||
@Html.AntiForgeryToken();
|
||||
<input id="license" type="text" name="license" value="@Model.License" />
|
||||
<button type="submit" class="button small">Activate</button>
|
||||
<button type="submit" class="button small">Activate Now</button>
|
||||
}
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
const $element = $('#license');
|
||||
const original = $element.val();
|
||||
$element.on('keyup', function (e) {
|
||||
const $button = $element.next('button');
|
||||
const value = $element.val();
|
||||
if (!original) {
|
||||
$element.prop('required', true);
|
||||
$button.text('Activate');
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>Activating Disco ICT with Online Services unlocks additional functionality.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 135px">
|
||||
License:
|
||||
</th>
|
||||
<td>
|
||||
@using (Html.BeginForm(MVC.API.System.LicenseCheck(), FormMethod.Post))
|
||||
{
|
||||
@Html.AntiForgeryToken();
|
||||
<input id="license" type="text" name="license" value="@Model.License" />
|
||||
<button type="submit" class="button small">Activate</button>
|
||||
}
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
const $element = $('#license');
|
||||
const original = $element.val();
|
||||
$element.on('keyup', function (e) {
|
||||
const $button = $element.next('button');
|
||||
const value = $element.val();
|
||||
if (!original) {
|
||||
$element.prop('required', true);
|
||||
$button.text('Activate');
|
||||
} else {
|
||||
if (original === value) {
|
||||
$button.text('Validate');
|
||||
} else {
|
||||
if (original === value) {
|
||||
$button.text('Validate');
|
||||
if (!value) {
|
||||
$button.text('Clear');
|
||||
} else {
|
||||
if (!value) {
|
||||
$button.text('Clear');
|
||||
} else {
|
||||
$button.text('Activate');
|
||||
}
|
||||
$button.text('Activate');
|
||||
}
|
||||
}
|
||||
}).trigger('keyup');
|
||||
});
|
||||
</script>
|
||||
}
|
||||
}).trigger('keyup');
|
||||
});
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
@if (Model.License != null)
|
||||
{
|
||||
<tr>
|
||||
<th style="width: 135px">
|
||||
Status:
|
||||
</th>
|
||||
<td>
|
||||
@if (Model.LicenseError != null)
|
||||
{
|
||||
<div class="error"><i class="fa fa-exclamation-circle fa-lg"></i> @Model.LicenseError</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>Expires @CommonHelpers.FriendlyDate(Model.LicenseExpires)</span>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
else
|
||||
{
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<strong>Official support is available</strong>
|
||||
<ul>
|
||||
<li>Initial implementation assistance.</li>
|
||||
<li>Commitment to maintaining Disco ICT functionality and associated plugins.</li>
|
||||
<li>Direct support.</li>
|
||||
<li>Access to additional functionality.</li>
|
||||
<li>Ability to suggest additional functionality, with a voice in feature prioritisation.</li>
|
||||
</ul>
|
||||
<div style="text-align: right; margin-top: 4px;">
|
||||
<a href="https://discoict.com.au/support.aspx" target="_blank" class="button small">Request More Information</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
if (Model.License != null)
|
||||
{
|
||||
<tr>
|
||||
<th style="width: 135px">
|
||||
Status:
|
||||
</th>
|
||||
<td>
|
||||
@if (Model.LicenseError != null)
|
||||
{
|
||||
<div class="error"><i class="fa fa-exclamation-circle fa-lg"></i> @Model.LicenseError</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>Expires @CommonHelpers.FriendlyDate(Model.LicenseExpires)</span>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
else
|
||||
{
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<strong>Official support is available</strong>
|
||||
<ul>
|
||||
<li>Initial implementation assistance.</li>
|
||||
<li>Commitment to maintaining Disco ICT functionality and associated plugins.</li>
|
||||
<li>Direct support.</li>
|
||||
<li>Access to additional functionality.</li>
|
||||
<li>Ability to suggest additional functionality, with a voice in feature prioritisation.</li>
|
||||
</ul>
|
||||
<div style="text-align: right; margin-top: 4px;">
|
||||
<a href="https://discoict.com.au/support.aspx" target="_blank" class="button small">Request More Information</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user