aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService/Controllers
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-02-25 11:02:07 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-02-25 11:02:07 +0200
commitb462fdd744f491b04137fd99863f6cb6c623cfa0 (patch)
tree2f69f8e953450a0452442c24f3809aec84ce7db0 /Software/Visual_Studio/Web/Tango.MachineService/Controllers
parenta8ddb23154fe5111c9509fa0a83dcc36adcba4ee (diff)
parent44a35db8a2929fb3f6aa56ed08185e066292f106 (diff)
downloadTango-b462fdd744f491b04137fd99863f6cb6c623cfa0.tar.gz
Tango-b462fdd744f491b04137fd99863f6cb6c623cfa0.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Controllers')
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs41
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs55
2 files changed, 51 insertions, 45 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
index 054c8d781..29cc067d6 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
@@ -18,18 +18,28 @@ using Tango.MachineStudio.Common.Web;
using Tango.Web.Controllers;
using Tango.Web.Helpers;
using Tango.Web.Storage;
-using Tango.Web.Authentication;
+using Tango.Web.Security;
using Tango.Web.ActiveDirectory;
using Tango.MachineService.Filters;
+using Tango.MachineService.Security;
namespace Tango.MachineService.Controllers
{
- public class MachineStudioController : JsonController
+ public class MachineStudioController : TangoController<MachineStudioController.TokenObject>
{
private static List<MachineStudioPendingUpload> _pendingUploads;
private ActiveDirectoryManager _ad_manager;
- public static TokensManager<String> TokensManager { get; set; }
+ public class TokenObject
+ {
+ public String UserGuid { get; set; }
+ }
+
+ public class RefreshTokenObject
+ {
+ public String Email { get; set; }
+ public String Password { get; set; }
+ }
#region Constructors
@@ -38,8 +48,6 @@ namespace Tango.MachineService.Controllers
/// </summary>
static MachineStudioController()
{
- TokensManager = new TokensManager<string>();
- TokensManager.ExpirationTime = TimeSpan.FromDays(10);
_pendingUploads = new List<MachineStudioPendingUpload>();
}
@@ -61,11 +69,13 @@ namespace Tango.MachineService.Controllers
/// <param name="request">The request.</param>
/// <returns></returns>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public CheckForUpdatesResponse CheckForUpdates(CheckForUpdatesRequest request)
{
LogManager.Log("Request received...");
+ var userID = RequestToken.Object.UserGuid;
+
CheckForUpdatesResponse response = new CheckForUpdatesResponse();
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
@@ -82,7 +92,7 @@ namespace Tango.MachineService.Controllers
if (latestVersion != null && Version.Parse(latestVersion.Version) > currentVersion)
{
- var manager = new StorageManager();
+ var manager = new BlobStorageManager();
var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER);
var blob = container.GetBlockBlobReference(latestVersion.BlobName);
@@ -103,7 +113,7 @@ namespace Tango.MachineService.Controllers
/// <param name="request">The request.</param>
/// <returns></returns>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public DownloadLatestVersionResponse DownloadLatestVersion(DownloadLatestVersionRequest request)
{
LogManager.Log("Request received...");
@@ -118,7 +128,7 @@ namespace Tango.MachineService.Controllers
if (latestVersion != null)
{
- var manager = new StorageManager();
+ var manager = new BlobStorageManager();
var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER);
var blob = container.GetBlockBlobReference(latestVersion.BlobName);
@@ -138,14 +148,14 @@ namespace Tango.MachineService.Controllers
/// <exception cref="System.ArgumentException">New version must be greater than latest version.</exception>
/// <exception cref="AuthenticationException">Invalid user credentials.</exception>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public UploadVersionResponse UploadVersion(UploadVersionRequest request)
{
UploadVersionResponse response = new UploadVersionResponse();
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- String userID = TokensManager.GetTokenObject(request.AccessToken);
+ String userID = RequestToken.Object.UserGuid;
var user = new UserBuilder(db).Set(userID).WithRolesAndPermissions().Build();
@@ -158,7 +168,7 @@ namespace Tango.MachineService.Controllers
{
String newVersionFileName = "Machine Studio Version" + " " + currentVersion.ToString() + ".zip";
- var manager = new StorageManager();
+ var manager = new BlobStorageManager();
var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER);
var blob = container.CreateEmptyBlob(newVersionFileName);
@@ -195,7 +205,7 @@ namespace Tango.MachineService.Controllers
/// <returns></returns>
/// <exception cref="System.ArgumentException">Invalid Token.</exception>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public UploadCompletedResponse NotifyUploadCompleted(UploadCompletedRequest request)
{
MachineStudioPendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token);
@@ -347,7 +357,10 @@ namespace Tango.MachineService.Controllers
Password = request.Password,
},
- WebToken = TokensManager.GetOrCreate(user.Guid),
+ AccessToken = WebToken<TokenObject>.CreateNew(MachineServiceConfig.JWT_TOKEN_SECRET, new TokenObject()
+ {
+ UserGuid = user.Guid,
+ }, DateTime.UtcNow.AddDays(1)).AccessToken,
VersionChangeRequired = versionChangeRequired,
RequiredVersion = requiredVersion,
};
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
index ead64fb38..0f36fa040 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
@@ -19,37 +19,30 @@ using Tango.Web.Helpers;
using Tango.Web.SMO;
using Tango.Web.Storage;
using System.Data.Entity;
-using Tango.Web.Authentication;
+using Tango.Web.Security;
using Tango.Web.ActiveDirectory;
using Tango.Core.Cryptography;
using Tango.MachineService.Filters;
+using Tango.BL.DTO;
namespace Tango.MachineService.Controllers
{
- public class PPCController : JsonController
+ public class PPCController : TangoController<PPCController.TokenObject>
{
private static List<PPCPendingUpload> _pendingUploads;
private ActiveDirectoryManager _ad_manager;
- public class TokenObject : IEquatable<TokenObject>
+ public class TokenObject
{
public LoginMode Mode { get; set; }
public String UserGuid { get; set; }
public String MachineGuid { get; set; }
-
- public bool Equals(TokenObject other)
- {
- return UserGuid == other.UserGuid || MachineGuid == MachineGuid;
- }
}
- public static TokensManager<TokenObject> TokensManager { get; set; }
-
#region Constructors
static PPCController()
{
- TokensManager = new TokensManager<TokenObject>();
_pendingUploads = new List<PPCPendingUpload>();
}
@@ -62,8 +55,8 @@ namespace Tango.MachineService.Controllers
#region Setup & Update
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public MachineSetupResponse MachineSetup(MachineSetupRequest request)
{
MachineSetupResponse response = new MachineSetupResponse();
@@ -73,7 +66,7 @@ namespace Tango.MachineService.Controllers
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
db.Configuration.LazyLoadingEnabled = false;
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -93,7 +86,7 @@ namespace Tango.MachineService.Controllers
response.Version = latest_machine_version.Version;
- var manager = new StorageManager();
+ var manager = new BlobStorageManager();
var container = manager.GetContainer(MachineServiceConfig.TANGO_VERSIONS_CONTAINER);
var blob = container.GetBlockBlobReference(latest_machine_version.BlobName);
@@ -136,8 +129,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public DownloadUpdateResponse MachineUpdate(DownloadUpdateRequest request)
{
DownloadUpdateResponse response = new DownloadUpdateResponse();
@@ -145,7 +138,7 @@ namespace Tango.MachineService.Controllers
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
db.Configuration.LazyLoadingEnabled = false;
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -160,7 +153,7 @@ namespace Tango.MachineService.Controllers
response.Version = latest_machine_version.Version;
- var manager = new StorageManager();
+ var manager = new BlobStorageManager();
var container = manager.GetContainer(MachineServiceConfig.TANGO_VERSIONS_CONTAINER);
var blob = container.GetBlockBlobReference(latest_machine_version.BlobName);
@@ -195,15 +188,15 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public CheckForUpdateResponse CheckForUpdate(CheckForUpdateRequest request)
{
CheckForUpdateResponse response = new CheckForUpdateResponse();
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -227,8 +220,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public UpdateDBResponse UpdateDB(UpdateDBRequest request)
{
UpdateDBResponse response = new UpdateDBResponse();
@@ -236,7 +229,7 @@ namespace Tango.MachineService.Controllers
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -301,8 +294,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public UploadVersionResponse UploadVersion(UploadVersionRequest request)
{
UploadVersionResponse response = new UploadVersionResponse();
@@ -315,7 +308,7 @@ namespace Tango.MachineService.Controllers
db.UsersRoles.ToList();
db.RolesPermissions.ToList();
- var user_guid = TokensManager.GetTokenObject(request.AccessToken).UserGuid;
+ var user_guid = RequestToken.Object.UserGuid;
var user = new UserBuilder(db).Set(user_guid).WithRolesAndPermissions().Build();
@@ -338,7 +331,7 @@ namespace Tango.MachineService.Controllers
{
String newVersionFileName = $"{machine_version.Name} - Tango Version {currentVersion.ToString()}.tup";
- var manager = new StorageManager();
+ var manager = new BlobStorageManager();
var container = manager.GetContainer(MachineServiceConfig.TANGO_VERSIONS_CONTAINER);
var blob = container.CreateEmptyBlob(newVersionFileName);
@@ -369,8 +362,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public UploadCompletedResponse NotifyUploadCompleted(UploadCompletedRequest request)
{
PPCPendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token);
@@ -408,7 +401,7 @@ namespace Tango.MachineService.Controllers
{
return new MachineVersionsResponse()
{
- MachineVersions = db.MachineVersions.ToList(),
+ MachineVersions = db.MachineVersions.ToList().Select(x => MachineVersionDTO.FromObservable(x)).ToList(),
};
}
}
@@ -439,11 +432,11 @@ namespace Tango.MachineService.Controllers
throw new AuthenticationException("Domain user found but the database entry validation failed.");
}
- response.WebToken = TokensManager.GetOrCreate(new TokenObject()
+ response.AccessToken = WebToken<TokenObject>.CreateNew(MachineServiceConfig.JWT_TOKEN_SECRET, new TokenObject()
{
Mode = LoginMode.User,
UserGuid = user.Guid,
- });
+ }).AccessToken;
}
else if (request.Mode == LoginMode.Machine)
{
@@ -454,11 +447,11 @@ namespace Tango.MachineService.Controllers
throw new AuthenticationException("Invalid serial number.");
}
- response.WebToken = TokensManager.GetOrCreate(new TokenObject()
+ response.AccessToken = WebToken<TokenObject>.CreateNew(MachineServiceConfig.JWT_TOKEN_SECRET, new TokenObject()
{
Mode = LoginMode.Machine,
- UserGuid = machine.Guid,
- });
+ MachineGuid = machine.Guid,
+ }).AccessToken;
}
}