diff options
| author | Avi Levkovich <avi@twine-s.com> | 2019-01-24 17:29:39 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2019-01-24 17:29:39 +0200 |
| commit | 5af9cb60feeda4b1dd781c3358418798d828d086 (patch) | |
| tree | 10d76fda2812077022d4ba459652f16fd08daafa /Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs | |
| parent | d1807ee5a17bada69c8062d7e218c006fe654a24 (diff) | |
| parent | 6f56066c9d7bca42857792a43063b7eb5a9f47ef (diff) | |
| download | Tango-5af9cb60feeda4b1dd781c3358418798d828d086.tar.gz Tango-5af9cb60feeda4b1dd781c3358418798d828d086.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs')
| -rw-r--r-- | Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs | 65 |
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, }; } |
