diff --git a/ScreenCast.Win/ScreenCast.Win.csproj b/ScreenCast.Win/ScreenCast.Win.csproj index 9da1f553..692148ba 100644 --- a/ScreenCast.Win/ScreenCast.Win.csproj +++ b/ScreenCast.Win/ScreenCast.Win.csproj @@ -277,8 +277,8 @@ if $(ConfigurationName) == Debug ( if $(PlatformName) == Any CPU ( - md "$(SolutionDir)Agent\bin\Debug\netcoreapp3.1\win10-x64\ScreenCast\" - copy /y "$(TargetDir)\*" "$(SolutionDir)Agent\bin\Debug\netcoreapp3.1\win10-x64\ScreenCast\" + md "$(SolutionDir)Agent\bin\Debug\netcoreapp3.1\ScreenCast\" + copy /y "$(TargetDir)\*" "$(SolutionDir)Agent\bin\Debug\netcoreapp3.1\ScreenCast\" ) ) diff --git a/Server/API/OrganizationManagementController.cs b/Server/API/OrganizationManagementController.cs index 607ff6c7..ffe27a2d 100644 --- a/Server/API/OrganizationManagementController.cs +++ b/Server/API/OrganizationManagementController.cs @@ -10,6 +10,7 @@ using Remotely.Server.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; +using Remotely.Shared.ViewModels.Organization; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 @@ -29,24 +30,7 @@ namespace Remotely.Server.API private DataService DataService { get; } private EmailSender EmailSender { get; } private UserManager UserManager { get; } - [HttpPost("AddUserPermission/{userID}")] - public IActionResult AddUserPermission(string userID, [FromBody]string permissionID) - { - if (!DataService.GetUserByName(User.Identity.Name).IsAdministrator) - { - return Unauthorized(); - } - if (!ModelState.IsValid) - { - return BadRequest(); - } - var result = DataService.AddPermissionToUser(User.Identity.Name, userID, permissionID.Trim(), out var errorMessage); - if (!result) - { - return BadRequest(errorMessage); - } - return Ok(permissionID); - } + [HttpPost("ChangeIsAdmin/{userID}")] public IActionResult ChangeIsAdmin(string userID, [FromBody]bool isAdmin) @@ -90,47 +74,6 @@ namespace Remotely.Server.API DataService.UpdateOrganizationName(User.Identity.Name, organizationName.Trim()); return Ok("ok"); } - [HttpDelete("Permission")] - public IActionResult Permission([FromBody]string permissionID) - { - if (!DataService.GetUserByName(User.Identity.Name).IsAdministrator) - { - return Unauthorized(); - } - - DataService.DeletePermission(User.Identity.Name, permissionID.Trim()); - return Ok("ok"); - } - - [HttpPost("Permission")] - public IActionResult Permission([FromBody]Permission permission) - { - if (!DataService.GetUserByName(User.Identity.Name).IsAdministrator) - { - return Unauthorized(); - } - if (!ModelState.IsValid) - { - return BadRequest(); - } - var result = DataService.AddPermission(User.Identity.Name, permission, out var permissionID, out var errorMessage); - if (!result) - { - return BadRequest(errorMessage); - } - return Ok(permissionID); - } - [HttpDelete("RemovePermissionFromUser/{userID}/{permissionID}")] - public IActionResult RemovePermissionFromUser(string userID, string permissionID) - { - if (!DataService.GetUserByName(User.Identity.Name).IsAdministrator) - { - return Unauthorized(); - } - - DataService.RemovePermissionFromUser(User.Identity.Name, userID, permissionID.Trim()); - return Ok("ok"); - } [HttpDelete("RemoveUserFromOrganization/{userID}")] public IActionResult RemoveUserFromOrganization(string userID) @@ -143,6 +86,7 @@ namespace Remotely.Server.API DataService.RemoveUserFromOrganization(User.Identity.Name, userID); return Ok("ok"); } + [HttpPost("SendInvite")] public async Task SendInvite([FromBody]Invite invite) { diff --git a/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml b/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml index d029a329..3c3008c9 100644 --- a/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml +++ b/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml @@ -26,33 +26,6 @@ - - - - @* Permissions *@ - - Permission Groups - - - @foreach (var permission in Model.PermissionList) - { - @permission.Name - } - - - - Remove - - - - - - Add - - - - - @@ -65,7 +38,6 @@ User Name Administrator - Permissions Remove @@ -82,7 +54,6 @@ { @Html.CheckBoxFor(x => x.Users[i].IsAdmin, new { user = Model.Users[i].ID, @class = "user-is-admin-checkbox" }) } - Permissions Remove } @@ -154,51 +125,6 @@ - - @* Modals *@ - @for (var i = 0; i < Model.Users.Count; i++) - { - - - - - Permissions for @Model.Users[i].UserName - × - - - - @foreach (var permission in Model.Users[i].Permissions) - { - @permission.Name - } - - - - Remove - - - - - @foreach (var permission in Model.PermissionList) - { - @permission.Name - } - - - - Add - - - - - - - - - - } } else { diff --git a/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs b/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs index 805d2c2e..64c3dbcf 100644 --- a/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs +++ b/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using Remotely.Shared.ViewModels.Organization; namespace Remotely.Server.Areas.Identity.Pages.Account.Manage { @@ -23,9 +24,6 @@ namespace Remotely.Server.Areas.Identity.Pages.Account.Manage [StringLength(25)] public string OrganizationName { get; set; } - [Display(Name = "Permission Groups")] - public List PermissionList { get; set; } - [Display(Name = "Users")] public List Users { get; set; } @@ -42,34 +40,9 @@ namespace Remotely.Server.Areas.Identity.Pages.Account.Manage { ID = x.Id, IsAdmin = x.IsAdministrator, - Permissions = x?.UserPermissionLinks?.Select(y => new Permission() - { - ID = y.PermissionGroupID, - Name = y.PermissionGroup.Name - })?.ToList(), UserName = x.UserName }).ToList(); - foreach (var user in Users) - { - var permissions = DataService.GetUserPermissions(User.Identity.Name, user.ID); - - if (permissions.Any()) - { - user.Permissions = permissions?.Select(x => new Permission - { - ID = x.PermissionGroupID, - Name = x.PermissionGroup?.Name - }).ToList(); - } - } - - PermissionList = DataService.GetAllPermissions(User.Identity.Name).Select(x => new Permission() - { - ID = x.ID, - Name = x.Name - }).ToList(); - Invites = DataService.GetAllInviteLinks(User.Identity.Name).Select(x => new Invite() { ID = x.ID, diff --git a/Server/Data/ApplicationDbContext.cs b/Server/Data/ApplicationDbContext.cs index 41928cdf..19c197ac 100644 --- a/Server/Data/ApplicationDbContext.cs +++ b/Server/Data/ApplicationDbContext.cs @@ -30,10 +30,7 @@ namespace Remotely.Server.Data public DbSet InviteLinks { get; set; } - public DbSet PermissionGroups { get; set; } - - public DbSet UserPermissionLinks { get; set; } - public DbSet DevicePermissionLinks { get; set; } + public DbSet DeviceGroups { get; set; } protected override void OnModelCreating(ModelBuilder builder) { @@ -53,9 +50,9 @@ namespace Remotely.Server.Data builder.Entity() .HasMany(x => x.EventLogs) .WithOne(x => x.Organization); - builder.Entity() - .HasMany(x => x.PermissionGroups) - .WithOne(x => x.Organization); + builder.Entity() + .HasMany(x => x.Devices) + .WithOne(x => x.DeviceGroup); builder.Entity() .HasMany(x => x.InviteLinks) .WithOne(x => x.Organization); @@ -95,34 +92,6 @@ namespace Remotely.Server.Data x => JsonConvert.SerializeObject(x), x => JsonConvert.DeserializeObject>(x)); - - builder.Entity() - .HasKey(x => new { x.PermissionGroupID, x.RemotelyUserID }); - - builder.Entity() - .HasOne(x => x.RemotelyUser) - .WithMany(y => y.UserPermissionLinks) - .HasForeignKey(x => x.RemotelyUserID); - - builder.Entity() - .HasOne(x => x.PermissionGroup) - .WithMany(y => y.UserPermissionLinks) - .HasForeignKey(x => x.PermissionGroupID); - - - builder.Entity() - .HasKey(x => new { x.PermissionGroupID, x.DeviceID }); - - builder.Entity() - .HasOne(x => x.RemotelyUser) - .WithMany(y => y.UserPermissionLinks) - .HasForeignKey(x => x.RemotelyUserID); - - builder.Entity() - .HasOne(x => x.PermissionGroup) - .WithMany(y => y.UserPermissionLinks) - .HasForeignKey(x => x.PermissionGroupID); - } } } diff --git a/Server/Data/DataService.cs b/Server/Data/DataService.cs index ffe92aaa..66c62bad 100644 --- a/Server/Data/DataService.cs +++ b/Server/Data/DataService.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Remotely.Shared.ViewModels.Organization; namespace Remotely.Server.Data { @@ -104,41 +105,24 @@ namespace Remotely.Server.Data public bool DoesUserHaveAccessToDevice(string deviceID, RemotelyUser remotelyUser) { var targetDevice = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .ThenInclude(x => x.PermissionGroup) - .ThenInclude(x => x.UserPermissionLinks) .FirstOrDefault(x => x.ID == deviceID && x.OrganizationID == remotelyUser.OrganizationID); - return remotelyUser.IsAdministrator || - targetDevice.DevicePermissionLinks.Count == 0 || - targetDevice.DevicePermissionLinks.Any(x => x.PermissionGroup.UserPermissionLinks.Any(y => y.RemotelyUserID == remotelyUser.Id)); + return RemotelyContext.Devices.Any(x => x.ID == deviceID && x.OrganizationID == remotelyUser.OrganizationID); } public bool DoesUserHaveAccessToDevice(string deviceID, string remotelyUserID) { var remotelyUser = RemotelyContext.Users.Find(remotelyUserID); - var targetDevice = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .ThenInclude(x => x.PermissionGroup) - .ThenInclude(x => x.UserPermissionLinks) - .FirstOrDefault(x => x.ID == deviceID && x.OrganizationID == remotelyUser.OrganizationID); - - return remotelyUser.IsAdministrator || - targetDevice.DevicePermissionLinks.Count == 0 || - targetDevice.DevicePermissionLinks.Any(x => x.PermissionGroup.UserPermissionLinks.Any(y => y.RemotelyUserID == remotelyUser.Id)); + return RemotelyContext.Devices.Any(x => x.ID == deviceID && x.OrganizationID == remotelyUser.OrganizationID); } public string[] FilterDeviceIDsByUserPermission(string[] deviceIDs, RemotelyUser remotelyUser) { return RemotelyContext.Devices.Where(x => - deviceIDs.Contains(x.ID) && - x.OrganizationID == remotelyUser.OrganizationID && - ( - remotelyUser.IsAdministrator || - x.DevicePermissionLinks.Count == 0 || - x.DevicePermissionLinks.Any(y => y.PermissionGroup.UserPermissionLinks.Any(z => z.RemotelyUserID == remotelyUser.Id)) - )) + deviceIDs.Contains(x.ID) && + x.OrganizationID == remotelyUser.OrganizationID + ) .Select(x => x.ID) .ToArray(); } @@ -151,34 +135,11 @@ namespace Remotely.Server.Data public IEnumerable GetAllDevicesForUser(string userID) { - var user = RemotelyContext.Users - .Include(x => x.UserPermissionLinks) - .FirstOrDefault(x => x.Id == userID); + var user = RemotelyContext.Users.FirstOrDefault(x => x.Id == userID); - var result = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .Where(x => x.OrganizationID == user.OrganizationID); - - if (user.IsAdministrator) - { - return result; - } - else - { - return result.Where(x => - x.DevicePermissionLinks.Count == 0 || - x.DevicePermissionLinks.Any(y => y.PermissionGroup.UserPermissionLinks.Any(z => z.RemotelyUserID == user.Id))); - } + return RemotelyContext.Devices.Where(x => x.OrganizationID == user.OrganizationID); } - public IEnumerable GetAllPermissions(string userName) - { - return RemotelyContext.Users - .Include(x => x.Organization) - .ThenInclude(x => x.PermissionGroups) - .FirstOrDefault(x => x.UserName == userName) - .Organization.PermissionGroups; - } public CommandContext GetCommandContext(string commandContextID, string userName) { @@ -208,52 +169,11 @@ namespace Remotely.Server.Data public Device GetDeviceForUser(string userID, string deviceID) { - var user = RemotelyContext.Users - .Include(x => x.UserPermissionLinks) - .FirstOrDefault(x => x.Id == userID); + var user = RemotelyContext.Users.FirstOrDefault(x => x.Id == userID); - var result = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .Where(x => + return RemotelyContext.Devices.FirstOrDefault(x => x.OrganizationID == user.OrganizationID && x.ID == deviceID); - - if (!user.IsAdministrator) - { - result = result.Where(x => - x.DevicePermissionLinks.Count == 0 || - x.DevicePermissionLinks.Any(y => y.PermissionGroup.UserPermissionLinks.Any(z => z.RemotelyUserID == user.Id))); - } - - return result.FirstOrDefault(); - } - - public IEnumerable GetDevicesAndPermissions(string userID, string[] deviceIDs) - { - var user = GetUserByID(userID); - - var devices = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .Include("DevicePermissionLinks.PermissionGroup") - .Where(x => x.OrganizationID == user.OrganizationID && deviceIDs.Contains(x.ID)) - .ToList(); - - return devices.Select(x => new Device() - { - DeviceName = x.DeviceName, - DevicePermissionLinks = x.DevicePermissionLinks.ToList() - }); - } - public RemotelyUser GetUserAndPermissionsByID(string userID) - { - if (userID == null) - { - return null; - } - return RemotelyContext.Users - .Include(x => x.Organization) - .Include(x => x.UserPermissionLinks) - .FirstOrDefault(x => x.Id == userID); } public RemotelyUser GetUserByID(string userID) @@ -279,24 +199,13 @@ namespace Remotely.Server.Data public List GetUsersWithAccessToDevice(IEnumerable userIDs, Device device) { var targetDevice = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .ThenInclude(x => x.PermissionGroup) - .ThenInclude(x => x.UserPermissionLinks) .FirstOrDefault(x => x.ID == device.ID && x.OrganizationID == device.OrganizationID); - // Users within the target device's organization, where user ID is in the list of IDs passed in, and - // user is either an admin, the target device has no permissions assigned, or the target device is in a - // permission group that the user is also in. var targetUsers = RemotelyContext.Users.Where(x => x.OrganizationID == device.OrganizationID && userIDs.Contains(x.Id)).ToList(); - var authorizedUsers = targetUsers.Where(x => - x.IsAdministrator || - targetDevice.DevicePermissionLinks.Count == 0 || - targetDevice.DevicePermissionLinks.Any(y => y.PermissionGroup.UserPermissionLinks.Any(z => z.RemotelyUserID == x.Id))); - - return authorizedUsers.ToList(); + return targetUsers.ToList(); } public void RemoveDevices(string[] deviceIDs) { @@ -370,95 +279,6 @@ namespace Remotely.Server.Data return newInvite; } - internal bool AddPermission(string userName, Permission permission, out string permissionID, out string errorMessage) - { - permissionID = null; - errorMessage = null; - var organization = RemotelyContext.Users - .Include(x => x.Organization) - .ThenInclude(x => x.PermissionGroups) - .FirstOrDefault(x => x.UserName == userName) - .Organization; - if (organization.PermissionGroups.Any(x => x.Name.ToLower() == permission.Name.ToLower())) - { - errorMessage = "Permission group already exists."; - return false; - } - var newPermission = new PermissionGroup() - { - Name = permission.Name, - Organization = organization - }; - organization.PermissionGroups.Add(newPermission); - RemotelyContext.SaveChanges(); - permissionID = newPermission.ID; - return true; - } - - internal void AddPermissionToDevices(string userID, string[] deviceIDs, string groupName) - { - var user = RemotelyContext.Users - .Include(x => x.Organization) - .Include(x => x.Organization) - .ThenInclude(x => x.Devices) - .FirstOrDefault(x => x.Id == userID); - - var group = user.Organization.PermissionGroups.FirstOrDefault(x => x.Name.ToLower() == groupName.ToLower()); - foreach (var deviceID in deviceIDs) - { - if (user.Organization.Devices.Any(x => x.ID == deviceID)) - { - var device = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .FirstOrDefault(x => x.ID == deviceID); - if (!device.DevicePermissionLinks.Any(x => x.PermissionGroupID == group.ID)) - { - device.DevicePermissionLinks.Add(new DevicePermissionLink() - { - Device = device, - DeviceID = device.ID, - PermissionGroup = group, - PermissionGroupID = group.ID - }); - RemotelyContext.Entry(device).State = EntityState.Modified; - } - } - } - RemotelyContext.SaveChanges(); - } - - internal bool AddPermissionToUser(string requesterUserName, string targetUserID, string permissionID, out string errorMessage) - { - errorMessage = null; - var requester = RemotelyContext.Users - .Include(x => x.Organization) - .FirstOrDefault(x => x.UserName == requesterUserName); - - var user = RemotelyContext.Users - .Include(x => x.UserPermissionLinks) - .FirstOrDefault(x => x.OrganizationID == requester.OrganizationID && x.Id == targetUserID); - - if (user.UserPermissionLinks.Any(x => x.PermissionGroupID == permissionID)) - { - errorMessage = "User is already in the permission group."; - return false; - } - - var permissions = RemotelyContext.PermissionGroups - .Include(x => x.Organization) - .Where(x => x.Organization.ID == requester.Organization.ID); - var permission = permissions.FirstOrDefault(x => x.ID == permissionID); - user.UserPermissionLinks.Add(new UserPermissionLink() - { - PermissionGroup = permission, - PermissionGroupID = permission.ID, - RemotelyUser = user, - RemotelyUserID = user.Id - }); - RemotelyContext.SaveChanges(); - return true; - } - internal string AddSharedFile(IFormFile file, string organizationID) { var expirationDate = DateTime.Now.AddDays(-AppConfig.DataRetentionInDays); @@ -537,27 +357,6 @@ namespace Remotely.Server.Data RemotelyContext.SaveChanges(); } - internal void DeletePermission(string userName, string permissionID) - { - var organization = RemotelyContext.Users - .Include(x => x.Organization) - .ThenInclude(x => x.PermissionGroups) - .FirstOrDefault(x => x.UserName == userName) - .Organization; - - var permissionGroup = organization.PermissionGroups.FirstOrDefault(x => x.ID == permissionID); - RemotelyContext.PermissionGroups.Remove(permissionGroup); - RemotelyContext.SaveChanges(); - } - - internal bool DoesGroupExist(string userID, string groupName) - { - var user = RemotelyContext.Users - .Include(x => x.Organization) - .ThenInclude(x => x.PermissionGroups) - .FirstOrDefault(x => x.Id == userID); - return user.Organization.PermissionGroups.Any(x => x.Name.ToLower() == groupName.ToLower()); - } internal ICollection GetAllInviteLinks(string userName) { @@ -600,17 +399,7 @@ namespace Remotely.Server.Data .UserOptions; } - internal IEnumerable GetUserPermissions(string requesterUserName, string targetID) - { - var requester = GetUserByName(requesterUserName); - var targetUser = RemotelyContext.Users - .Include(x => x.Organization) - .Include("UserPermissionLinks.PermissionGroup") - .FirstOrDefault(x => x.OrganizationID == requester.OrganizationID && - x.Id == targetID); - return targetUser.UserPermissionLinks; - } internal bool JoinViaInvitation(string userName, string inviteID) { @@ -628,13 +417,11 @@ namespace Remotely.Server.Data var user = RemotelyContext.Users .Include(x => x.Organization) - .Include(x => x.UserPermissionLinks) .FirstOrDefault(x => x.UserName == userName); user.Organization = invite.Organization; user.OrganizationID = invite.Organization.ID; user.IsAdministrator = invite.IsAdmin; - user.UserPermissionLinks.Clear(); invite.Organization.RemotelyUsers.Add(user); RemotelyContext.SaveChanges(); @@ -643,47 +430,6 @@ namespace Remotely.Server.Data RemotelyContext.SaveChanges(); return true; } - internal void RemovePermissionFromDevices(string userID, string[] deviceIDs, string groupName) - { - var user = RemotelyContext.Users - .Include(x => x.Organization) - .ThenInclude(x => x.Devices) - .FirstOrDefault(x => x.Id == userID); - - var group = user.Organization.PermissionGroups.FirstOrDefault(x => x.Name.ToLower() == groupName.ToLower()); - foreach (var deviceID in deviceIDs) - { - if (user.Organization.Devices.Any(x => x.ID == deviceID)) - { - var device = RemotelyContext.Devices - .Include(x => x.DevicePermissionLinks) - .FirstOrDefault(x => x.ID == deviceID); - foreach (var permission in device.DevicePermissionLinks.ToList().Where(x => x.PermissionGroupID == group.ID)) - { - device.DevicePermissionLinks.Remove(permission); - } - RemotelyContext.Entry(device).State = EntityState.Modified; - } - } - RemotelyContext.SaveChanges(); - } - - internal void RemovePermissionFromUser(string requesterUserName, string targetUserID, string permissionID) - { - var requester = RemotelyContext.Users - .Include(x => x.Organization) - .ThenInclude(x => x.RemotelyUsers) - .ThenInclude(x => x.UserPermissionLinks) - .FirstOrDefault(x => x.UserName == requesterUserName); - - var target = requester.Organization.RemotelyUsers.FirstOrDefault(x => x.Id == targetUserID); - foreach (var permission in target.UserPermissionLinks.ToList().Where(x => x.PermissionGroupID == permissionID)) - { - target.UserPermissionLinks.Remove(permission); - } - RemotelyContext.Entry(target).State = EntityState.Modified; - RemotelyContext.SaveChanges(); - } internal void RemoveUserFromOrganization(string requesterUserName, string targetUserID) { diff --git a/Server/Migrations/20190405052943_Initial.Designer.cs b/Server/Migrations/20190405052943_Initial.Designer.cs deleted file mode 100644 index b49682c1..00000000 --- a/Server/Migrations/20190405052943_Initial.Designer.cs +++ /dev/null @@ -1,525 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Remotely.Server.Data; - -namespace Remotely.Server.Migrations -{ - [DbContext(typeof(ApplicationDbContext))] - [Migration("20190405052943_Initial")] - partial class Initial - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.2.3-servicing-35854"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Discriminator") - .IsRequired(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("RemotelyUsers"); - - b.HasDiscriminator("Discriminator").HasValue("IdentityUser"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("ProviderKey") - .HasMaxLength(128); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("Name") - .HasMaxLength(128); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.CommandContext", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("CommandMode"); - - b.Property("CommandResults"); - - b.Property("CommandText"); - - b.Property("OrganizationID"); - - b.Property("PSCoreResults"); - - b.Property("SenderConnectionID"); - - b.Property("SenderUserID"); - - b.Property("TargetDeviceIDs"); - - b.Property("TimeStamp"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("CommandContexts"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.Device", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("CurrentUser"); - - b.Property("DeviceName"); - - b.Property("Drives"); - - b.Property("FreeMemory"); - - b.Property("FreeStorage"); - - b.Property("Is64Bit"); - - b.Property("IsOnline"); - - b.Property("LastOnline"); - - b.Property("OSArchitecture"); - - b.Property("OSDescription"); - - b.Property("OrganizationID"); - - b.Property("Platform"); - - b.Property("ProcessorCount"); - - b.Property("ServerVerificationToken"); - - b.Property("Tags") - .HasMaxLength(200); - - b.Property("TotalMemory"); - - b.Property("TotalStorage"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("Devices"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.DevicePermissionLink", b => - { - b.Property("PermissionGroupID"); - - b.Property("DeviceID"); - - b.HasKey("PermissionGroupID", "DeviceID"); - - b.HasIndex("DeviceID"); - - b.ToTable("DevicePermissionLinks"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.EventLog", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("EventType"); - - b.Property("Message"); - - b.Property("OrganizationID"); - - b.Property("Source"); - - b.Property("StackTrace"); - - b.Property("TimeStamp"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("EventLogs"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.InviteLink", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("DateSent"); - - b.Property("InvitedUser"); - - b.Property("IsAdmin"); - - b.Property("OrganizationID"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("InviteLinks"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.Organization", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("OrganizationName") - .HasMaxLength(25); - - b.HasKey("ID"); - - b.ToTable("Organizations"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.PermissionGroup", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Name") - .HasMaxLength(100); - - b.Property("OrganizationID"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("PermissionGroups"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.SharedFile", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("ContentType"); - - b.Property("FileContents"); - - b.Property("FileName"); - - b.Property("OrganizationID"); - - b.Property("Timestamp"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("SharedFiles"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.UserPermissionLink", b => - { - b.Property("PermissionGroupID"); - - b.Property("RemotelyUserID"); - - b.HasKey("PermissionGroupID", "RemotelyUserID"); - - b.HasIndex("RemotelyUserID"); - - b.ToTable("UserPermissionLinks"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.RemotelyUser", b => - { - b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); - - b.Property("IsAdministrator"); - - b.Property("OrganizationID"); - - b.Property("UserOptions"); - - b.HasIndex("OrganizationID"); - - b.ToTable("RemotelyUsers"); - - b.HasDiscriminator().HasValue("RemotelyUser"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Remotely_Shared.Models.CommandContext", b => - { - b.HasOne("Remotely_Shared.Models.Organization", "Organization") - .WithMany("CommandContexts") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.Device", b => - { - b.HasOne("Remotely_Shared.Models.Organization", "Organization") - .WithMany("Devices") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.DevicePermissionLink", b => - { - b.HasOne("Remotely_Shared.Models.Device", "Device") - .WithMany("DevicePermissionLinks") - .HasForeignKey("DeviceID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Remotely_Shared.Models.PermissionGroup", "PermissionGroup") - .WithMany("DevicePermissionLinks") - .HasForeignKey("PermissionGroupID") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Remotely_Shared.Models.EventLog", b => - { - b.HasOne("Remotely_Shared.Models.Organization", "Organization") - .WithMany("EventLogs") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.InviteLink", b => - { - b.HasOne("Remotely_Shared.Models.Organization", "Organization") - .WithMany("InviteLinks") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.PermissionGroup", b => - { - b.HasOne("Remotely_Shared.Models.Organization", "Organization") - .WithMany("PermissionGroups") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.SharedFile", b => - { - b.HasOne("Remotely_Shared.Models.Organization", "Organization") - .WithMany("SharedFiles") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely_Shared.Models.UserPermissionLink", b => - { - b.HasOne("Remotely_Shared.Models.PermissionGroup", "PermissionGroup") - .WithMany("UserPermissionLinks") - .HasForeignKey("PermissionGroupID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Remotely_Shared.Models.RemotelyUser", "RemotelyUser") - .WithMany("UserPermissionLinks") - .HasForeignKey("RemotelyUserID") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Remotely_Shared.Models.RemotelyUser", b => - { - b.HasOne("Remotely_Shared.Models.Organization", "Organization") - .WithMany("RemotelyUsers") - .HasForeignKey("OrganizationID"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Server/Migrations/20190703215422_ResetUrl.cs b/Server/Migrations/20190703215422_ResetUrl.cs deleted file mode 100644 index 57fdd9d7..00000000 --- a/Server/Migrations/20190703215422_ResetUrl.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Remotely.Server.Migrations -{ - public partial class ResetUrl : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "ResetUrl", - table: "InviteLinks", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "ResetUrl", - table: "InviteLinks"); - } - } -} diff --git a/Server/Migrations/20190705195745_Device.AgentVersion.Designer.cs b/Server/Migrations/20190705195745_Device.AgentVersion.Designer.cs deleted file mode 100644 index 14bbf48c..00000000 --- a/Server/Migrations/20190705195745_Device.AgentVersion.Designer.cs +++ /dev/null @@ -1,529 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Remotely.Server.Data; - -namespace Remotely.Server.Migrations -{ - [DbContext(typeof(ApplicationDbContext))] - [Migration("20190705195745_Device.AgentVersion")] - partial class DeviceAgentVersion - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.2.4-servicing-10062"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Discriminator") - .IsRequired(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("RemotelyUsers"); - - b.HasDiscriminator("Discriminator").HasValue("IdentityUser"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("ProviderKey") - .HasMaxLength(128); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("Name") - .HasMaxLength(128); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.CommandContext", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("CommandMode"); - - b.Property("CommandResults"); - - b.Property("CommandText"); - - b.Property("OrganizationID"); - - b.Property("PSCoreResults"); - - b.Property("SenderConnectionID"); - - b.Property("SenderUserID"); - - b.Property("TargetDeviceIDs"); - - b.Property("TimeStamp"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("CommandContexts"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.Device", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("AgentVersion"); - - b.Property("CurrentUser"); - - b.Property("DeviceName"); - - b.Property("Drives"); - - b.Property("FreeMemory"); - - b.Property("FreeStorage"); - - b.Property("Is64Bit"); - - b.Property("IsOnline"); - - b.Property("LastOnline"); - - b.Property("OSArchitecture"); - - b.Property("OSDescription"); - - b.Property("OrganizationID"); - - b.Property("Platform"); - - b.Property("ProcessorCount"); - - b.Property("ServerVerificationToken"); - - b.Property("Tags") - .HasMaxLength(200); - - b.Property("TotalMemory"); - - b.Property("TotalStorage"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("Devices"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.DevicePermissionLink", b => - { - b.Property("PermissionGroupID"); - - b.Property("DeviceID"); - - b.HasKey("PermissionGroupID", "DeviceID"); - - b.HasIndex("DeviceID"); - - b.ToTable("DevicePermissionLinks"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.EventLog", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("EventType"); - - b.Property("Message"); - - b.Property("OrganizationID"); - - b.Property("Source"); - - b.Property("StackTrace"); - - b.Property("TimeStamp"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("EventLogs"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.InviteLink", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("DateSent"); - - b.Property("InvitedUser"); - - b.Property("IsAdmin"); - - b.Property("OrganizationID"); - - b.Property("ResetUrl"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("InviteLinks"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.Organization", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("OrganizationName") - .HasMaxLength(25); - - b.HasKey("ID"); - - b.ToTable("Organizations"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.PermissionGroup", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("Name") - .HasMaxLength(100); - - b.Property("OrganizationID"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("PermissionGroups"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.SharedFile", b => - { - b.Property("ID") - .ValueGeneratedOnAdd(); - - b.Property("ContentType"); - - b.Property("FileContents"); - - b.Property("FileName"); - - b.Property("OrganizationID"); - - b.Property("Timestamp"); - - b.HasKey("ID"); - - b.HasIndex("OrganizationID"); - - b.ToTable("SharedFiles"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.UserPermissionLink", b => - { - b.Property("PermissionGroupID"); - - b.Property("RemotelyUserID"); - - b.HasKey("PermissionGroupID", "RemotelyUserID"); - - b.HasIndex("RemotelyUserID"); - - b.ToTable("UserPermissionLinks"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.RemotelyUser", b => - { - b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); - - b.Property("IsAdministrator"); - - b.Property("OrganizationID"); - - b.Property("UserOptions"); - - b.HasIndex("OrganizationID"); - - b.ToTable("RemotelyUsers"); - - b.HasDiscriminator().HasValue("RemotelyUser"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Remotely.Shared.Models.CommandContext", b => - { - b.HasOne("Remotely.Shared.Models.Organization", "Organization") - .WithMany("CommandContexts") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.Device", b => - { - b.HasOne("Remotely.Shared.Models.Organization", "Organization") - .WithMany("Devices") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.DevicePermissionLink", b => - { - b.HasOne("Remotely.Shared.Models.Device", "Device") - .WithMany("DevicePermissionLinks") - .HasForeignKey("DeviceID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Remotely.Shared.Models.PermissionGroup", "PermissionGroup") - .WithMany("DevicePermissionLinks") - .HasForeignKey("PermissionGroupID") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Remotely.Shared.Models.EventLog", b => - { - b.HasOne("Remotely.Shared.Models.Organization", "Organization") - .WithMany("EventLogs") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.InviteLink", b => - { - b.HasOne("Remotely.Shared.Models.Organization", "Organization") - .WithMany("InviteLinks") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.PermissionGroup", b => - { - b.HasOne("Remotely.Shared.Models.Organization", "Organization") - .WithMany("PermissionGroups") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.SharedFile", b => - { - b.HasOne("Remotely.Shared.Models.Organization", "Organization") - .WithMany("SharedFiles") - .HasForeignKey("OrganizationID"); - }); - - modelBuilder.Entity("Remotely.Shared.Models.UserPermissionLink", b => - { - b.HasOne("Remotely.Shared.Models.PermissionGroup", "PermissionGroup") - .WithMany("UserPermissionLinks") - .HasForeignKey("PermissionGroupID") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Remotely.Shared.Models.RemotelyUser", "RemotelyUser") - .WithMany("UserPermissionLinks") - .HasForeignKey("RemotelyUserID") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Remotely.Shared.Models.RemotelyUser", b => - { - b.HasOne("Remotely.Shared.Models.Organization", "Organization") - .WithMany("RemotelyUsers") - .HasForeignKey("OrganizationID"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Server/Migrations/20190705195745_Device.AgentVersion.cs b/Server/Migrations/20190705195745_Device.AgentVersion.cs deleted file mode 100644 index 4922aec6..00000000 --- a/Server/Migrations/20190705195745_Device.AgentVersion.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Remotely.Server.Migrations -{ - public partial class DeviceAgentVersion : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "AgentVersion", - table: "Devices", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "AgentVersion", - table: "Devices"); - } - } -} diff --git a/Server/Migrations/20190703215422_ResetUrl.Designer.cs b/Server/Migrations/20191211163438_Initial.Designer.cs similarity index 52% rename from Server/Migrations/20190703215422_ResetUrl.Designer.cs rename to Server/Migrations/20191211163438_Initial.Designer.cs index 87364a72..dc038a98 100644 --- a/Server/Migrations/20190703215422_ResetUrl.Designer.cs +++ b/Server/Migrations/20191211163438_Initial.Designer.cs @@ -9,27 +9,30 @@ using Remotely.Server.Data; namespace Remotely.Server.Migrations { [DbContext(typeof(ApplicationDbContext))] - [Migration("20190703215422_ResetUrl")] - partial class ResetUrl + [Migration("20191211163438_Initial")] + partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "2.2.4-servicing-10062"); + .HasAnnotation("ProductVersion", "3.1.0"); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => { b.Property("Id") - .ValueGeneratedOnAdd(); + .HasColumnType("TEXT"); b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); + .IsConcurrencyToken() + .HasColumnType("TEXT"); b.Property("Name") + .HasColumnType("TEXT") .HasMaxLength(256); b.Property("NormalizedName") + .HasColumnType("TEXT") .HasMaxLength(256); b.HasKey("Id"); @@ -44,14 +47,18 @@ namespace Remotely.Server.Migrations modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { b.Property("Id") - .ValueGeneratedOnAdd(); + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); - b.Property("ClaimType"); + b.Property("ClaimType") + .HasColumnType("TEXT"); - b.Property("ClaimValue"); + b.Property