private void BindData() { Users userda = new Users(Globals.CurrentIdentity); Courses courseda = new Courses(Globals.CurrentIdentity); int courseID = GetCourseID(); User user = userda.GetInfo(GetUsername(), null); txtFirst.Text = user.FirstName; txtLast.Text = user.LastName; txtEmail.Text = user.Email; double total = courseda.GetTotalPoints(courseID); double userp = userda.GetCoursePoints(user.UserName, courseID); lblTotal.Text = String.Format("{0} / {1} ({2}%)", userp, total, Math.Round((userp / total) * 100.0, 2)); dgReport.DataSource = courseda.GetAssignments(courseID); dgReport.DataBind(); CourseRole.CourseRoleList roles = courseda.GetRoles(courseID, null); CourseRole urole = courseda.GetRole(user.UserName, courseID, null); ddlRoles.Items.Clear(); foreach (CourseRole role in roles) { ListItem item = new ListItem(role.Name, role.PrincipalID.ToString()); if (role.PrincipalID == urole.PrincipalID) { item.Selected = true; } ddlRoles.Items.Add(item); } }
private void dgRoles_ItemDataBound(object sender, DataGridItemEventArgs e) { Label lblType, lblName; LinkButton lnkPermissions; if (null != (lblType = (Label)e.Item.FindControl("lblType"))) { lblName = (Label)e.Item.FindControl("lblName"); lnkPermissions = (LinkButton)e.Item.FindControl("lnkPermissions"); Principal prin = (Principal)e.Item.DataItem; if (prin is User) { User user = prin as User; lblType.Text = "User"; lblName.Text = user.FullName + " (" + user.UserName + ")"; } else { CourseRole role = prin as CourseRole; lblType.Text = "Role"; lblType.Font.Bold = true; lblName.Text = prin.Name; lblName.Font.Bold = true; if (!role.Staff) { lnkPermissions.Enabled = false; } } } }
public async Task <bool> ToggleRole(string courseId, string userId, CourseRole role, string grantedById, string comment) { courseId = courseId.ToLower(); var userRole = db.UserRoles.Where(x => x.UserId == userId && x.Role == role && x.CourseId == courseId).ToList().LastOrDefault(); bool isEnabled; if (userRole != null && (!userRole.IsEnabled.HasValue || userRole.IsEnabled.Value)) { isEnabled = false; } else { isEnabled = true; } var record = new UserRole { UserId = userId, CourseId = courseId, Role = role, IsEnabled = isEnabled, GrantedById = grantedById, GrantTime = DateTime.Now.ToUniversalTime(), Comment = comment }; db.UserRoles.Add(record); await db.SaveChangesAsync(); return(isEnabled); }
public async Task <ActionResult> ToggleRole(string courseId, string userId, CourseRole role) { var comment = Request.Form["comment"]; var currentUserId = User.Identity.GetUserId(); var isCourseAdmin = User.HasAccessFor(courseId, CourseRole.CourseAdmin); if ((userManager.FindById(userId) == null || userId == currentUserId) && (!isCourseAdmin || role == CourseRole.CourseAdmin) && !User.IsSystemAdministrator()) { return(Json(new { status = "error", message = "Вы не можете изменить эту роль у самих себя." })); } var canAddInstructors = coursesRepo.HasCourseAccess(currentUserId, courseId, CourseAccessType.AddAndRemoveInstructors); if (!isCourseAdmin && !canAddInstructors) { return(Json(new { status = "error", message = "У вас нет прав назначать преподавателей или тестеров. Это могут делать только администраторы курса и преподаватели со специальными правами." })); } if (!isCourseAdmin && role == CourseRole.CourseAdmin) { return(Json(new { status = "error", message = "Вы не можете назначать администраторов курса. Это могут делать только другие администраторы курса." })); } var enabledRole = await userRolesRepo.ToggleRole(courseId, userId, role, currentUserId, comment); if (enabledRole && (role == CourseRole.Instructor || role == CourseRole.CourseAdmin)) { await NotifyAboutNewInstructor(courseId, userId, currentUserId); } return(Json(new { status = "ok", role = role.ToString() })); }
private void RefreshProc() { // First login AuthenticationServiceClient authClient = new AuthenticationServiceClient(); string authToken = null; try { authToken = authClient.ValidateUser(m_user, m_pass); } catch (System.ServiceModel.EndpointNotFoundException) { authClient.Close(); m_onComplete(this, new OSBLEStateEventArgs(false, "Could not connect to the OSBLE server. " + "Please contact support if this problem persists.")); return; } authClient.Close(); authClient = null; if (string.IsNullOrEmpty(authToken)) { m_onComplete(this, new OSBLEStateEventArgs(false, "Could not log in to OSBLE. " + "Please check your user name and password.")); return; } // Now get a list of courses OsbleServiceClient osc = new OsbleServiceClient(); m_courses = osc.GetCourses(authToken); // Make sure we got some courses if (null == m_courses || 0 == m_courses.Length) { m_onComplete(this, new OSBLEStateEventArgs(false, "No courses were found for this user.")); return; } // Go through the courses and find out this user's role List <Course> canBeGraded = new List <Course>(); foreach (Course c in m_courses) { CourseRole cr = osc.GetCourseRole(c.ID, authToken); if (cr.CanGrade) { canBeGraded.Add(c); } } m_courses = canBeGraded.ToArray(); // Success if we made it this far m_onComplete(this, new OSBLEStateEventArgs(true, string.Empty)); }
public UserFeedSetting(UserFeedSetting other) : this() { this.Id = other.Id; this.EventFilterSettings = other.EventFilterSettings; this.UserId = other.UserId; this.SettingsDate = other.SettingsDate; this.CourseFilter = -1; this.CourseRole = CourseRole.Student; }
public static bool HasAccessFor(this IPrincipal principal, string courseId, CourseRole minAccessLevel) { if (principal.IsSystemAdministrator()) return true; var courseRole = principal.GetAllRoles().FirstOrDefault(t => string.Equals(t.Item1, courseId, StringComparison.OrdinalIgnoreCase)); return courseRole?.Item2 <= minAccessLevel; }
public List<string> GetListOfUsersWithCourseRole(CourseRole? courseRole, string courseId) { if (!courseRole.HasValue) return null; var usersQuery = db.UserRoles.Where(userRole => userRole.Role == courseRole); if (!string.IsNullOrEmpty(courseId)) usersQuery = usersQuery.Where(userRole => userRole.CourseId == courseId); return usersQuery.Select(user => user.UserId).Distinct().ToList(); }
public async Task <ActionResult> ToggleRole(string courseId, string userId, CourseRole role) { if (userManager.FindById(userId) == null || userId == User.Identity.GetUserId()) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } await userRolesRepo.ToggleRole(courseId, userId, role); return(Content(role.ToString())); }
public static bool HasAccessFor(this IPrincipal principal, string courseId, CourseRole minAccessLevel) { if (principal.IsSystemAdministrator()) { return(true); } var courseRole = principal.GetAllRoles().FirstOrDefault(t => string.Equals(t.Item1, courseId, StringComparison.OrdinalIgnoreCase)); return(courseRole?.Item2 <= minAccessLevel); }
public static bool HasAccess(this IPrincipal principal, CourseRole minAccessLevel) { if (principal.IsSystemAdministrator()) return true; var roles = principal.GetAllRoles().Select(t => t.Item2).ToList(); if (!roles.Any()) return false; return roles.Min() <= minAccessLevel; }
public static bool HasAccessFor(this IPrincipal principal, string courseId, CourseRole minAccessLevel) { if (principal.IsSystemAdministrator()) return true; var courseRole = principal.GetAllRoles().FirstOrDefault(t => t.Item1 == courseId); if (courseRole == null) return false; return courseRole.Item2 <= minAccessLevel; }
public bool HasUserAccessToCourse(string userId, string courseId, CourseRole minCourseRoleType) { var user = userManager.FindByNameAsync(userId).Result; if (IsSystemAdministrator(user)) { return(true); } return(GetActualUserRoles(userId).Any(r => string.Equals(r.CourseId, courseId, StringComparison.OrdinalIgnoreCase) && r.Role <= minCourseRoleType)); }
public async Task ToggleRole(string courseId, string userId, CourseRole role) { var userRole = db.UserRoles.FirstOrDefault(u => u.UserId == userId && u.Role == role && u.CourseId == courseId); if (userRole == null) db.UserRoles.Add(new UserRole { UserId = userId, CourseId = courseId, Role = role }); else db.UserRoles.Remove(userRole); await db.SaveChangesAsync(); }
public static bool HasAccess(this IPrincipal principal, CourseRole minAccessLevel) { if (principal.IsSystemAdministrator()) { return(true); } var roles = principal.GetAllRoles().Select(t => t.Item2).ToList(); if (!roles.Any()) { return(false); } return(roles.Min() <= minAccessLevel); }
/// <summary> /// Create a course role /// </summary> public CourseRole CreateRole(int courseID, string name, bool isstaff) { //Check permission Authorize(courseID, Permission.COURSE, "createrole", courseID, null); CourseRole role = new CourseRole(); role.CourseID = courseID; role.Name = name; role.Staff = isstaff; //Create role m_dp.CreateCourseRole(role); return(role); }
public static bool HasAccessFor(this IPrincipal principal, string courseId, CourseRole minAccessLevel) { if (principal.IsSystemAdministrator()) { return(true); } var courseRole = principal.GetAllRoles().FirstOrDefault(t => t.Item1 == courseId); if (courseRole == null) { return(false); } return(courseRole.Item2 <= minAccessLevel); }
public async Task ToggleRole(string courseId, string userId, CourseRole role) { var userRole = db.UserRoles.FirstOrDefault(u => u.UserId == userId && u.Role == role && u.CourseId == courseId); if (userRole == null) { db.UserRoles.Add(new UserRole { UserId = userId, CourseId = courseId, Role = role }); } else { db.UserRoles.Remove(userRole); } await db.SaveChangesAsync(); }
public List <string> GetCoursesWhereUserIsInRole(string userId, CourseRole minCourseRoleType) { var roles = GetActualUserRoles(userId).Where(r => r.Role <= minCourseRoleType).ToList(); return(roles.Select(r => r.CourseId).ToList()); }
/// <summary> /// Deny a permission to an entity /// </summary> public bool Deny(CourseRole role, string etype, string perm, int entityID, int courseID) { Authorize(courseID, etype, "updateperms", entityID, null); return(m_dp.DenyPermission(role.PrincipalID, perm, etype, entityID)); }
private static void AddCourseRole(this ClaimsIdentity identity, string courseId, CourseRole role) { identity.AddClaim(new Claim(courseRoleClaimType, courseId + " " + role)); }
public static IEnumerable<string> GetCoursesIdFor(this IPrincipal principal, CourseRole role) { return principal.GetAllRoles().Where(t => t.Item2 <= role).Select(t => t.Item1); }
public Task <bool> HasUserAccessToAnyCourseAsync(string userId, CourseRole minCourseRole) { return(db.UserRoles.Where(r => r.UserId == userId && r.Role <= minCourseRole).AnyAsync()); }
public async Task <bool> HasUserAccessToCourseAsync(string userId, string courseId, CourseRole minCourseRole) { return(await db.UserRoles.Where(r => r.UserId == userId && r.CourseId == courseId && r.Role <= minCourseRole).AnyAsync()); }
public CourseRoleRequirement(CourseRole minCourseRole) { MinCourseRole = minCourseRole; }
public async Task<ActionResult> ToggleRole(string courseId, string userId, CourseRole role) { if (userManager.FindById(userId) == null || userId == User.Identity.GetUserId()) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); await userRolesRepo.ToggleRole(courseId, userId, role); return Content(role.ToString()); }
/// <summary> /// Create the course /// </summary> public bool Create(string name, string number, string instructor) { Course course = new Course(); //TODO: Verify these values course.Name = name; course.Number = number; //Create course m_dp.CreateCourse(course); //Get all data course = GetInfo(course.ID); //Define default roles CourseRole role = new CourseRole(); role.CourseID = course.ID; role.Name = "Student"; role.Staff = false; m_dp.CreateCourseRole(role); role.Name = "TA"; role.Staff = true; m_dp.CreateCourseRole(role); role.Name = "Instructor"; role.Staff = true; m_dp.CreateCourseRole(role); //Assign filesys permissions CourseRole student = GetRoleInfo("Student", course.ID); CourseRole ta = GetRoleInfo("TA", course.ID); CourseRole ins = GetRoleInfo("Instructor", course.ID); CFilePermission.FilePermissionList full = new CFilePermission.FilePermissionList(); full.AddRange(CFilePermission.CreateFullAccess(ta.PrincipalID)); full.AddRange(CFilePermission.CreateFullAccess(ins.PrincipalID)); full.Add(new CFilePermission(student.PrincipalID, FileAction.READ, true)); //Create content area FileSystem fs = new FileSystem(m_ident); string cpath = @"c:\ccontent\" + course.ID; CFile cdir = fs.CreateDirectory(cpath, false, full); course.ContentID = cdir.ID; Update(course); CFile ldir = fs.CreateDirectory(cpath + @"\" + "lnotes", false, null); ldir.Alias = "Lecture Notes"; fs.UpdateFileInfo(ldir, false); //Put operator in course temporarily m_dp.CreateCourseMember(m_ident.Name, course.ID, "Instructor", null); //Assign course perms CreatePermissions(course.ID, course.ID, Permission.COURSE); if (instructor != m_ident.Name) { //Add instructor AddUser(instructor, "Instructor", course.ID, null); //Take operator out RemoveUser(m_ident.Name, course.ID); } return(true); }
private static void AddCourseRole(this ClaimsIdentity identity, string courseId, CourseRole role) { identity.AddClaim(new Claim(courseRoleClaimType, courseId + " " + role)); }
public static IEnumerable <string> GetCoursesIdFor(this IPrincipal principal, CourseRole role) { return(principal.GetAllRoles().Where(t => t.Item2 <= role).Select(t => t.Item1)); }