aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs')
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs65
1 files changed, 61 insertions, 4 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
index c9d7ea8b6..21e3e7eb2 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
@@ -94,6 +94,40 @@ namespace Tango.MachineService.Controllers
}
[HttpPost]
+ public DownloadLatestVersionResponse DownloadLatestVersion(DownloadLatestVersionRequest request)
+ {
+ LogManager.Log("Request received...");
+
+ DownloadLatestVersionResponse response = new DownloadLatestVersionResponse();
+
+ using (ObservablesContext db = ObservablesContextHelper.CreateContext())
+ {
+ if (_tokens_manager.Exists(request.AccessToken))
+ {
+ var versions = db.MachineStudioVersions.ToList();
+
+ MachineStudioVersion latestVersion = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
+
+ if (latestVersion != null)
+ {
+ var manager = new StorageManager();
+ var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER);
+ var blob = container.GetBlockBlobReference(latestVersion.BlobName);
+
+ response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60));
+ response.Version = latestVersion.Version;
+ }
+ }
+ else
+ {
+ throw new AuthenticationException("Invalid token.");
+ }
+ }
+
+ return response;
+ }
+
+ [HttpPost]
public UploadVersionResponse UploadVersion(UploadVersionRequest request)
{
UploadVersionResponse response = new UploadVersionResponse();
@@ -196,13 +230,23 @@ namespace Tango.MachineService.Controllers
[HttpPost]
public LoginResponse Login(LoginRequest request)
{
- var authResult =_ad_manager.ValidateUserCredentials(request.Email, request.Password);
+ var authResult = _ad_manager.ValidateUserCredentials(request.Email, request.Password);
if (!_ad_manager.CanUserAccessCurrentEnvironment(request.Email))
{
throw new AuthenticationException($"You do not have permissions to access the {MachineServiceConfig.DEPLOYMENT_SLOT.ToDescription()} environment.");
}
+ Version client_version;
+
+ if (!Version.TryParse(request.Version, out client_version))
+ {
+ client_version = new Version("1.0.0.0");
+ }
+
+ bool versionChangeRequired = false;
+ String requiredVersion = null;
+
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
db.Roles.ToList();
@@ -232,8 +276,8 @@ namespace Tango.MachineService.Controllers
db.UsersRoles.Add(new UsersRole()
{
- User = new_user,
- Role = db.Roles.Single(x => (Roles)x.Code == Roles.User),
+ User = new_user,
+ Role = db.Roles.Single(x => (Roles)x.Code == Roles.User),
});
db.UsersRoles.Add(new UsersRole()
@@ -252,6 +296,17 @@ namespace Tango.MachineService.Controllers
}
db.SaveChanges();
+
+ if (MachineServiceConfig.ENFORCE_MACHINE_STUDIO_VERSION)
+ {
+ var latest_version = db.MachineStudioVersions.ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
+
+ if (latest_version != null && Version.Parse(latest_version.Version) != client_version)
+ {
+ versionChangeRequired = true;
+ requiredVersion = latest_version.Version;
+ }
+ }
}
return new LoginResponse()
@@ -266,7 +321,9 @@ namespace Tango.MachineService.Controllers
Password = request.Password,
},
- Token = _tokens_manager.CreateNew()
+ Token = _tokens_manager.CreateNew(),
+ VersionChangeRequired = versionChangeRequired,
+ RequiredVersion = requiredVersion,
};
}