/// <summary> /// 完成日志记录此方法: AddInstitute /// </summary> /// <param name="moduleId"></param> /// <param name="instituteId"></param> /// <returns></returns> public IActionResult AddInstitute([Required] int moduleId, [Required] int instituteId) { if (ModelState.IsValid) { if (!_analysis.GetLoginUserConfig(HttpContext).Power.SystemInfoManager) { return(Json(new { isOk = false, error = "你并无信息管理操作权限" })); } if (_context.Modules.Any(val => val.ModuleId == moduleId) && _context.Institute.Any(ins => ins.InstituteId == instituteId)) { LogPricipalOperation log = _logger.GetDefaultLogPricipalOperation(PrincpalOperationCode.ChangeInstituteToModule, " 学院id: {instituteId} 模块id {moduleId}", $"将一个学院归属要这个模块 学院id: {instituteId} 模块id {moduleId}"); if (_context.InstituteToModules.Any(one => one.InstituteId == instituteId)) { _logger.Logger(log); return(Json(new { isOk = false, error = "学院有归属了! 一个学院不能属于两个模块" })); } else { InstituteToModule im = new InstituteToModule { InstituteId = instituteId, ModuleId = moduleId }; log.PrincpalOperationStatus = PrincpalOperationStatus.Success; _context.InstituteToModules.Add(im); _context.LogPricipalOperations.Add(log); _context.SaveChanges(); return(Json(new { isOk = true, })); } } else { return(Json(new { isOk = false, error = "模块或者学院不存在! 你不要搞我涩!" })); } } else { return(Json(new { isOk = false, error = "参数错误" })); } }
/// <summary> /// 完成日志记录方法 DeleteInstitute /// </summary> /// <param name="moduleId"></param> /// <param name="instituteId"></param> /// <returns></returns> public IActionResult DeleteInstitute([Required] int moduleId, [Required] int instituteId) { if (ModelState.IsValid) { if (!_analysis.GetLoginUserConfig(HttpContext).Power.SystemInfoManager) { return(Json(new { isOk = false, error = "你并无信息管理操作权限" })); } LogPricipalOperation log = _logger.GetDefaultLogPricipalOperation(PrincpalOperationCode.DeleteInstituteFromModule, " 学院id: {instituteId} 模块id {moduleId}", $"将一个学院从此模块中排除出去 学院id: {instituteId} 模块id {moduleId}"); InstituteToModule im = _context.InstituteToModules.FirstOrDefault(val => val.InstituteId == instituteId && val.ModuleId == moduleId); if (im != null) { log.PrincpalOperationStatus = PrincpalOperationStatus.Success; _context.InstituteToModules.Remove(im); _context.LogPricipalOperations.Add(log); _context.SaveChanges(); return(Json(new { isOk = true })); } else { _logger.Logger(log); return(Json(new { isOk = false, error = "没有此条记录,记录着此学院属于此模块" })); } } else { return(Json(new { isOk = false, error = "参数错误" })); } }
public IActionResult Login([Required] String userId, [Required] String userPassword) { if (ModelState.IsValid) { userId = userId.Trim(); userPassword = userPassword.Trim(); //判断用户身份 UserType type = _analysis.GetUserType(userId); if (type == UserType.Anonymous) //匿名用户 { return(Json(new { isOk = false, message = "账户不存在!如果你的账号尚未录入请联系系统维护人员录入!", })); } //如果是管理员判断密码是否正确 if (type == UserType.Principal) { Principal principal = _context.Principals.Find(userId); if (_ncryption.DecryptByRsa(principal.Password) != _ncryption.EncodeByMd5(_ncryption.EncodeByMd5(userPassword))) { return(Json(new { isOk = false, message = "管理员的密码不正确!", })); } } //如果是学生判断密码是正确 if (type == UserType.Student) { if (!_context.Student.Any(stu => stu.Password == _ncryption.EncodeByMd5(_ncryption.EncodeByMd5(userPassword)))) { return(Json(new { isOk = false, message = "同学你的密码不正确!忘记了可以修改密码。", })); } } //判断是否让管理员登录 超级管理员不被禁止登录 SystemSetting setting = _config.LoadSystemSetting(); if (type == UserType.Principal) { Principal principal = _context.Principals.Find(userId); if (!setting.LoginSetting.PrincipalLogin && principal.PrincipalStatus != PrincipalStatus.Super) { return(Json(new { isOk = false, message = "系统维护中,管理员请等待系统维护之后进入!", })); } //判断此管理员是否已经被禁止 if (principal.PrincipalStatus == PrincipalStatus.Ban) { return(Json(new { isOk = false, message = "管理员,你已经被禁止登录!", })); } //验证成功保存信息让其登录 LoginUserModel user = new LoginUserModel() { UserId = userId, UserPassword = userPassword, LoginTime = DateTime.Now, UserType = type }; var userData = JsonConvert.SerializeObject(user, Formatting.None); ClaimsIdentity identity = new ClaimsIdentity(); identity.AddClaim(new Claim(ClaimTypes.Name, principal.Name)); //用户名 姓名 identity.AddClaim(new Claim(ClaimTypes.Role, "Principal")); //角色 identity.AddClaim(new Claim(ClaimTypes.UserData, userData)); //用户数据 ClaimsPrincipal claimPrincipal = new ClaimsPrincipal(identity); AuthenticationProperties property = new AuthenticationProperties { ExpiresUtc = DateTimeOffset.UtcNow.AddHours(16),//保存 16小时 IsPersistent = true }; //持久化 Cookie 浏览器关闭了 只有在IsPersistent为True时,才会在写入Cookie指定Expires HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimPrincipal, property); return(Json(new { isOk = true, url = "/Principal/Index", message = "登录成功!" })); } else { Student student = _context.Student.Find(userId); if (!setting.LoginSetting.StudentLogin) { return(Json(new { isOk = false, message = "系统尚未允许学生登录!请等待通知...", })); } //模块判断 if (!_context.InstituteToModules.Any(im => im.InstituteId == student.InstituteId)) { return(Json(new { isOk = false, message = "你所在学院并没有被规划在考试模块内,你无法参与实验室安全学习...", })); } InstituteToModule itm = _context.InstituteToModules.FirstOrDefault(m => m.InstituteId == student.InstituteId); /* 学习任务安排 -- 判断是否安排了学习任务 */ if (!_context.VLearningMaps.Any(l => l.StudentId == student.StudentId && l.ModuleId == itm.ModuleId)) { /* CourceView 自动统计了 每个课程的 在用的视频资源数量 */ List <vCourceMap> courseMaps = _context.VCourceMaps .Where(vc => vc.ModuleId == itm.ModuleId && vc.RCount != 0 && vc.CourceStatus == CourceStatus.Using) .ToList(); //找出在用的所有课程 /* 如果有学习任务*/ if (courseMaps.Count > 0) { //安排学习课程 foreach (var item in courseMaps) { Learing learning = new Learing { StudentId = student.StudentId, CourceId = item.CourceId, IsFinish = false, AddTime = DateTime.Now }; _context.Learings.Add(learning); //记录学习进度 List <Resource> resources = _context.Resources .Where(r => r.CourceId == item.CourceId) .Where(r => r.ResourceStatus == ResourceStatus.Using) .Where(r => r.ResourceType == ResourceType.Vedio) .ToList(); foreach (var res in resources) { Progress progress = new Progress { AddTime = DateTime.Now, NeedTime = res.LengthOfStudy, StudyTime = 0, StudentId = student.StudentId, ResourceId = res.ResourceId }; _context.Progresses.Add(progress); } } } /*如果没有学习任务*/ } _context.SaveChanges(); LoginUserModel user = new LoginUserModel() { UserId = userId, UserPassword = userPassword, LoginTime = DateTime.Now, UserType = type }; var userData = JsonConvert.SerializeObject(user, Formatting.None); ClaimsIdentity identity = new ClaimsIdentity(); identity.AddClaim(new Claim(ClaimTypes.Name, student.Name)); //用户名 姓名 identity.AddClaim(new Claim(ClaimTypes.Role, "Student")); //角色 identity.AddClaim(new Claim(ClaimTypes.UserData, userData)); //用户数据 ClaimsPrincipal claimPrincipal = new ClaimsPrincipal(identity); AuthenticationProperties property = new AuthenticationProperties { ExpiresUtc = DateTimeOffset.UtcNow.AddHours(28),//保存28小时 IsPersistent = true }; //持久化 Cookie 浏览器关闭了 只有在IsPersistent为True时,才会在写入Cookie指定Expires HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimPrincipal, property); return(Json(new { isOk = true, url = "/Student/Index", message = "登录成功!" })); } } else { return(Json(new { isOk = false, message = "传递了错误的参数!无法登录", url = "/Error/ParameterError" })); } }
/// <summary> /// 创建一个新的学院 /// </summary> /// <param name="name"></param> /// <param name="moduleId"></param> /// <returns></returns> public async Task <IActionResult> Create([Required] String name, [Required] int moduleId) { if (ModelState.IsValid) { if (!_analysis.GetLoginUserConfig(HttpContext).Power.SystemInfoManager) { return(Json(new { isOk = false, error = "你并无信息管理操作权限" })); } if (_context.Modules.Any(m => m.ModuleId == moduleId)) { if (_context.Institute.Any(ins => ins.Name == name)) { return(Json(new { isOk = false, error = "新建学院名称重复,已经存在此学院" })); } else { LogPricipalOperation log = _logger.GetDefaultLogPricipalOperation( PrincpalOperationCode.InstituteAdd, $"添加新的学院", $"添加新的学院名称 {name}"); log.PrincpalOperationStatus = PrincpalOperationStatus.Success; _context.LogPricipalOperations.Add(log); Institute institute = new Institute { Name = name }; _context.Institute.Add(institute); await _context.SaveChangesAsync().ContinueWith(t => { int result = t.Result; if (result == 1) { InstituteToModule instituteToModule = new InstituteToModule(); instituteToModule.ModuleId = moduleId; instituteToModule.InstituteId = institute.InstituteId; _context.Add(instituteToModule); _context.SaveChangesAsync(); } }); return(Json(new { isOk = true, })); } } else { return(Json(new { isOk = false, error = "不存在此模块!学院不可属于此模块" })); } } else { return(Json(new { isOk = false, error = "参数错误" })); } }