aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-12-24 09:08:25 +0200
committerShlomo Hecht <shlomo@twine-s.com>2018-12-24 09:08:25 +0200
commit2f77ad3cebf771bdf02188174c9712027b004d41 (patch)
tree32d819fbbb57063b9289d39f1cacf4febb83ea28 /Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
parent0cc8f5b14286302880f56aaa20a7078b92579a97 (diff)
parent99a48d7c388792c96ce7ac1b4e1436d395c4aec1 (diff)
downloadTango-2f77ad3cebf771bdf02188174c9712027b004d41.tar.gz
Tango-2f77ad3cebf771bdf02188174c9712027b004d41.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_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.cs69
1 files changed, 67 insertions, 2 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
index 245c18b9b..8485cd67d 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
@@ -1,4 +1,5 @@
-using System;
+using Microsoft.IdentityModel.Clients.ActiveDirectory;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
@@ -6,10 +7,14 @@ using System.Net.Http;
using System.Security.Authentication;
using System.Web.Http;
using Tango.BL;
+using Tango.BL.Builders;
using Tango.BL.Entities;
using Tango.BL.Enumerations;
+using Tango.Core.Cryptography;
using Tango.MachineService.Helpers;
using Tango.MachineService.Models;
+using Tango.MachineStudio.Common.Authentication;
+using System.Data.Entity;
using Tango.MachineStudio.Common.Update;
namespace Tango.MachineService.Controllers
@@ -23,6 +28,8 @@ namespace Tango.MachineService.Controllers
_pendingUploads = new List<MachineStudioPendingUpload>();
}
+ #region Update
+
[HttpPost]
public CheckForUpdatesResponse CheckForUpdates(CheckForUpdatesRequest request)
{
@@ -100,7 +107,7 @@ namespace Tango.MachineService.Controllers
var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password);
- if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersion))
+ if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersions))
{
var latestVersion = db.MachineStudioVersions.ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
Version currentVersion = Version.Parse(request.Version);
@@ -182,5 +189,63 @@ namespace Tango.MachineService.Controllers
return new LatestVersionResponse() { Version = version != null ? version.Version : "0.0.0.0" };
}
}
+
+ #endregion
+
+ [HttpPost]
+ public LoginResponse Login(LoginRequest request)
+ {
+ AuthenticationResult authResult = AzureDirectoryHelper.AuthenticateUser(request.Email, request.Password);
+
+ using (ObservablesContext db = ObservablesContextHelper.CreateContext())
+ {
+ db.Roles.ToList();
+ db.Permissions.ToList();
+ db.UsersRoles.ToList();
+ db.RolesPermissions.ToList();
+
+ var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower());
+
+ IHashGenerator g = new BasicHashGenerator();
+
+ if (user == null)
+ {
+ //Than add the user !!
+ User new_user = new User();
+ new_user.Email = request.Email;
+ new_user.Password = g.Encrypt(request.Password);
+ new_user.Organization = db.Organizations.Include(x => x.Address).Single(x => x.Name == "Twine");
+ new_user.Address = new_user.Organization.Address.Clone();
+ new_user.Contact = new Contact()
+ {
+ FirstName = authResult.UserInfo.GivenName,
+ LastName = authResult.UserInfo.FamilyName,
+ FullName = authResult.UserInfo.GivenName + " " + authResult.UserInfo.FamilyName,
+ Email = request.Email,
+ };
+ new_user.Roles.Add(db.Roles.Single(x => (Roles)x.Code == Roles.User));
+ }
+ else
+ {
+ user.Password = g.Encrypt(request.Password);
+ }
+
+ db.SaveChanges();
+ }
+
+ return new LoginResponse()
+ {
+ DataSource = new Core.DataSource()
+ {
+ Address = Config.DB_ADDRESS,
+ Catalog = Config.DB_CATALOG,
+ Type = Core.DataSourceType.Azure,
+ IntegratedSecurity = false,
+ UserName = request.Email,
+ Password = request.Password,
+ }
+ };
+ }
+
}
}