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