72 lines
2.5 KiB
C#
72 lines
2.5 KiB
C#
using Disco.Data.Repository;
|
|
using Disco.Models.ClientServices;
|
|
using Disco.Services.Authorization;
|
|
using Disco.Services.Devices.Enrolment;
|
|
using Disco.Services.Users;
|
|
using System;
|
|
using System.Web;
|
|
|
|
namespace Disco.Services
|
|
{
|
|
public static class ClientServicesExtensions
|
|
{
|
|
|
|
public static EnrolResponse BuildResponse(this Enrol request)
|
|
{
|
|
if (HttpContext.Current == null)
|
|
throw new PlatformNotSupportedException("This function can only be accessed from within ASP.NET");
|
|
|
|
string username = null;
|
|
if (HttpContext.Current.Request.IsAuthenticated)
|
|
username = HttpContext.Current.User.Identity.Name;
|
|
|
|
using (DiscoDataContext database = new DiscoDataContext())
|
|
{
|
|
EnrolResponse response = WindowsDeviceEnrolment.Enrol(database, username, request);
|
|
database.SaveChanges();
|
|
return response;
|
|
}
|
|
}
|
|
|
|
public static WhoAmIResponse BuildResponse(this WhoAmI request)
|
|
{
|
|
if (HttpContext.Current == null)
|
|
throw new PlatformNotSupportedException("This function can only be accessed from within ASP.NET");
|
|
|
|
string username = null;
|
|
if (HttpContext.Current.Request.IsAuthenticated)
|
|
username = HttpContext.Current.User.Identity.Name;
|
|
|
|
if (username == null)
|
|
throw new InvalidOperationException("Unauthenticated Http Context");
|
|
|
|
using (DiscoDataContext database = new DiscoDataContext())
|
|
{
|
|
AuthorizationToken token = UserService.GetAuthorization(username, database, true);
|
|
|
|
WhoAmIResponse response = new WhoAmIResponse()
|
|
{
|
|
Username = token.User.UserId,
|
|
DisplayName = token.User.DisplayName,
|
|
Type = token.Has(Claims.ComputerAccount) ? "Computer Account" : "User Account"
|
|
};
|
|
return response;
|
|
}
|
|
}
|
|
|
|
public static MacEnrolResponse BuildResponse(this MacEnrol request)
|
|
{
|
|
if (HttpContext.Current == null)
|
|
throw new PlatformNotSupportedException("This function can only be accessed from within ASP.NET");
|
|
|
|
using (DiscoDataContext database = new DiscoDataContext())
|
|
{
|
|
MacEnrolResponse response = MacDeviceEnrolment.Enrol(database, request, false);
|
|
database.SaveChanges();
|
|
return response;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|