Beispiel #1
0
        public ClaimsIdentity GenerateUserIdentity(UserManager <ApplicationUser> manager)
        {
            ApplicationUser.InvalidateCurrent();

            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = manager.CreateIdentity(this, DefaultAuthenticationTypes.ApplicationCookie);

            if (manager.IsInRole(userIdentity.GetUserId(), UserRoles.SuperUserRole))
            {
                userIdentity.AddClaim(new Claim(SystemRoleClaim, UserRoles.SuperUserRole));
            }
            else
            {
                var isInstructor = false;
                using (var db = new AugerContext())
                {
                    var enrollments = db.Enrollments.Where(e => e.UserId == this.Id);
                    foreach (var enrollment in enrollments)
                    {
                        if (enrollment.IsInRole(UserRoles.InstructorRole))
                        {
                            isInstructor = true;
                            break;
                        }
                    }
                }
                userIdentity.AddClaim(new Claim(SystemRoleClaim, isInstructor ? UserRoles.InstructorRole : UserRoles.LearnerRole));
            }

            _identity = userIdentity;
            return(userIdentity);
        }
Beispiel #2
0
        public static StudentSubmission Submit(Repository workRepository)
        {
            StudentSubmission submission = new StudentSubmission();

            try
            {
                using (var db = new AugerContext())
                {
                    var studentAssignment = db.StudentAssignments
                                            .Include(sa => sa.Assignment)
                                            .Include(sa => sa.Enrollment.User)
                                            .FirstOrDefault(sa => sa.AssignmentId == workRepository.RepositoryId && sa.Enrollment.UserName == workRepository.UserName);

                    if (studentAssignment == null)
                    {
                        var ex = new InvalidOperationException("Unable to retrieve the student assignment from the given repository.");
                        submission.Exception = ex.Message;
                        Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                    }
                    else
                    {
                        var repo = SubmissionRepository.Get(studentAssignment);

                        string commitId = repo.CommitFromRepository(workRepository);
                        if (commitId != null)
                        {
                            submission.StudentAssignment = studentAssignment;
                            //submission.StudentAssignment.AssignmentId = repo.RepositoryId;
                            submission.CommitId  = commitId;
                            submission.Succeeded = true;

                            db.StudentSubmissions.Add(submission);
                            studentAssignment.HasSubmission = true;

                            db.SaveChanges();

                            using (var t = new SubmissionTester(submission))
                            {
                                t.TestAll();
                            }

                            db.SaveChanges();
                        }
                        else
                        {
                            submission.Exception = "There were no changes detected. No new submission has been saved.";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                submission.Exception = ex.Message;
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
            }

            return(submission);
        }
        // GET api/values

        public ValuesController(AugerContext context)
        {
            _context = context;

            if (_context.HubItems.Count() == 0)
            {
                _context.HubItems.Add(new AugerTable {
                    Name = "Item1", Mobile = "54343"
                });
                _context.SaveChanges();
            }
        }
Beispiel #4
0
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var user = ApplicationUser.Current;

            if (user == null)
            {
                return(false);
            }

            // Allow SuperUser no matter what
            if (user.Roles.Where(r => r.RoleId.ToLowerInvariant() == UserRoles.SuperUserRole.ToLowerInvariant()).Any())
            {
                return(true);
            }

            int courseId = CookieManager.GetCourseId();

            if (courseId == 0)
            {
                // TODO: WARNING...this returns true when no course is selected
                return(true);
            }

            using (var db = new AugerContext())
            {
                var enrollment = db.Enrollments.Where(e => e.CourseId == courseId && e.UserId == user.Id).FirstOrDefault();

                if (enrollment == null)
                {
                    return(false);
                }

                if (_allowedRoles.Length == 0)
                {
                    return(true);
                }

                foreach (var role in _allowedRoles)
                {
                    if (enrollment.IsInRole(role))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }