Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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();
                    }
                }
            }
        }
Esempio n. 6
0
        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();
        }