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); }
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(); } }
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); }