public Guid QueueJob(ScriptVersion script, string parameters, int?UserId = null, int?ScheduleId = null, int?AutomationId = null) { var newJob = new Job(); newJob.Created = DateTime.UtcNow; newJob.CreatedByAutomationId = AutomationId; newJob.CreatedByScheduleId = ScheduleId; newJob.CreatedByUserId = UserId; newJob.JobStatusId = (short)JobStatusEnum.New; newJob.JobUid = Guid.NewGuid(); newJob.ScriptVersionId = script.ScriptVersionId; _context.Add(newJob); _context.SaveChanges(); if (!string.IsNullOrEmpty(parameters)) { JobParameters jobParameters = new JobParameters(); jobParameters.JobUid = newJob.JobUid; jobParameters.Parameters = parameters; _context.Add(jobParameters); _context.SaveChanges(); } var newJobQueue = new JobQueue(); newJobQueue.JobUid = newJob.JobUid; newJobQueue.Created = newJob.Created; newJobQueue.ScriptVersionId = script.ScriptVersionId; newJobQueue.ScriptLanguage = (short)script.ScriptLanguageId; _context.Add(newJobQueue); _context.SaveChanges(); return(newJobQueue.JobUid); }
private Db.Models.User NewUser(short authType) { var newUser = new Db.Models.User(); newUser.AuthenticationId = authType; _db.Add(newUser); _db.SaveChanges(); return(newUser); }
public ScriptVersion New(int scriptId, [FromBody] string body) { int?maxScriptVersion = _dbContext.ScriptVersion .Where(p => p.ScriptId.Equals(scriptId)) .OrderByDescending(p => p.Version) .Select(p => p.Version) .FirstOrDefault(); var userId = _ephItUser.Register().UserId; var scriptVersion = new ScriptVersion { CreatedByUserId = userId, Created = DateTime.UtcNow, Body = body, ScriptId = scriptId, Version = 1 }; if (maxScriptVersion.HasValue) { scriptVersion.Version = maxScriptVersion.Value + 1; } _dbContext.Add(scriptVersion); _dbContext.SaveChanges(); return(scriptVersion); }
public async Task <int> NewAsync(string name, string description) { var userId = _ephItUser.Register().UserId; // This will return the new scriptId and then the Blazor site will // Immediately redirect from the "new" page to the "Details" page of this // Script - so we want to ensure they have permission to it. var userRoleId = await _dbContext.RoleObjectAction .Where(p => p.RbacActionId.Equals((short)RBACActionEnum.Create) && p.RbacObjectId.Equals((short)RBACObjectEnum.Scripts) && p.Role.RoleMembershipUser.Where(us => us.UserId.Equals(userId)).Any() ) .Select(p => p.RoleId) .FirstAsync(); var newScript = new EphIt.Db.Models.Script { Created = DateTime.UtcNow, CreatedByUserId = userId, Description = description, Name = name, Modified = DateTime.UtcNow, ModifiedByUserId = userId }; _dbContext.Add(newScript); await _dbContext.SaveChangesAsync(); var roleAsyncTask = AssociateWithRoleAsync(newScript.ScriptId, userRoleId); var auditTask = _auditLogger.AuditLog(AuditObject.Script, AuditAction.Create, AuditStatus.Success, newScript.ScriptId); await Task.WhenAll(roleAsyncTask, auditTask); return(newScript.ScriptId); }
public void ConfigureDb(IEphItUser user, EphItContext _context) { if (_context.Database.GetPendingMigrations().Any()) { _context.Database.Migrate(); var internalUser = _context.User.Where(p => p.AuthenticationId.Equals((short)AuthenticationEnum.EphItInternal)).First(); var admin = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault(); if (admin == null) { admin = new Role(); admin.CreatedByUserId = internalUser.UserId; admin.Created = DateTime.UtcNow; admin.Description = "Full administrator of all objects"; admin.Name = "Administrators"; admin.IsGlobal = true; admin.Modified = DateTime.UtcNow; admin.ModifiedByUserId = internalUser.UserId; _context.Add(admin); _context.SaveChanges(); } foreach (RBACActionEnum a in (RBACActionEnum[])Enum.GetValues(typeof(RBACActionEnum))) { foreach (RBACObjectEnum b in (RBACObjectEnum[])Enum.GetValues(typeof(RBACObjectEnum))) { if (!_context.RoleObjectAction.Where(p => p.RoleId.Equals(admin.RoleId) && p.RbacObjectId.Equals((short)b) && p.RbacActionId.Equals((short)a) ) .Any() ) { var tempObject = new RoleObjectAction(); tempObject.RoleId = admin.RoleId; tempObject.RbacObjectId = (short)b; tempObject.RbacActionId = (short)a; _context.Add(tempObject); } } } _context.SaveChanges(); } // Add current user to full admin role var vUser = user.RegisterCurrent(); if (!_context.RoleMembershipUser.Where(p => p.UserId == vUser.UserId && p.Role.Name.Equals("Administrators")).Any()) { var admin = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault(); var newRoleMembership = new RoleMembershipUser(); newRoleMembership.RoleId = admin.RoleId; newRoleMembership.UserId = vUser.UserId; _context.Add(newRoleMembership); } _context.SaveChanges(); IConfigurationSection configSection = Configuration.GetSection("AdminUsers"); if (configSection != null) { foreach (var section in configSection.GetChildren()) { var paramDictionary = new Dictionary <string, string>(); string authType = ""; switch (section["AuthenticationType"]) { case "AzureActiveDirectory": authType = "AzureActiveDirectory"; paramDictionary = new Dictionary <string, string>() { { "TenantId", section["TenantId"] }, { "ObjectId", section["ObjectId"] }, { "UserName", section["UserName"] }, { "Name", section["Name"] }, { "Email", section["Email"] } }; break; } if (!String.IsNullOrEmpty(authType)) { var aUser = user.Register(authType, paramDictionary); if (!_context.RoleMembershipUser.Where(p => p.UserId == aUser.UserId && p.Role.Name.Equals("Administrators")).Any()) { var admin = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault(); var newRoleMembership = new RoleMembershipUser(); newRoleMembership.RoleId = admin.RoleId; newRoleMembership.UserId = aUser.UserId; _context.Add(newRoleMembership); } _context.SaveChanges(); } } } }
public void ConfigureDb(IEphItUser user, EphItContext _context) { bool migrateDb = true; try { migrateDb = _context.Database.EnsureCreated(); if (!migrateDb) { migrateDb = _context.Database.GetPendingMigrations().Any(); } } catch { migrateDb = true; } if (migrateDb) { _context.Database.Migrate(); var internalUser = _context.User.Where(p => p.AuthenticationId.Equals((short)AuthenticationEnum.EphItInternal)).First(); var admin = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault(); if (admin == null) { admin = new Role(); admin.CreatedByUserId = internalUser.UserId; admin.Created = DateTime.UtcNow; admin.Description = "Full administrator of all objects"; admin.Name = "Administrators"; admin.IsGlobal = true; admin.Modified = DateTime.UtcNow; admin.ModifiedByUserId = internalUser.UserId; _context.Add(admin); _context.SaveChanges(); } foreach (RBACActionEnum a in (RBACActionEnum[])Enum.GetValues(typeof(RBACActionEnum))) { foreach (RBACObjectEnum b in (RBACObjectEnum[])Enum.GetValues(typeof(RBACObjectEnum))) { if (!_context.RoleObjectAction.Where(p => p.RoleId.Equals(admin.RoleId) && p.RbacObjectId.Equals((short)b) && p.RbacActionId.Equals((short)a) ) .Any() ) { var tempObject = new RoleObjectAction(); tempObject.RoleId = admin.RoleId; tempObject.RbacObjectId = (short)b; tempObject.RbacActionId = (short)a; _context.Add(tempObject); } } } _context.SaveChanges(); } // Add current user to full admin role var vUser = user.RegisterCurrent(); if (!_context.RoleMembershipUser.Where(p => p.UserId == vUser.UserId && p.Role.Name.Equals("Administrators")).Any()) { var admin = _context.Role.Where(p => p.Name.Equals("Administrators")).FirstOrDefault(); var newRoleMembership = new RoleMembershipUser(); newRoleMembership.RoleId = admin.RoleId; newRoleMembership.UserId = vUser.UserId; _context.Add(newRoleMembership); } _context.SaveChanges(); }