private async Task <PortalTokenResp> LoginFinallyExecute(UserInfoBigMo user, PortalAuthorizeType authType, bool isFromThirdBind = false, SocialPlatform plat = SocialPlatform.None) { Resp <UserIdentity> identityRes; switch (authType) { case PortalAuthorizeType.Admin: // 登录时默认只有admin,不会出现 superAdmin var adminRes = await AdminInfoRep.Instance.GetAdminByUId(user.id); if (!adminRes.IsSuccess()) { return new PortalTokenResp() { ret = adminRes.ret, msg = "管理员账号/密码错误!" } } ; identityRes = InitialAdminIdentity(adminRes.data, plat); break; case PortalAuthorizeType.User: identityRes = InitialUserIdentity(user, plat); break; default: return(new PortalTokenResp(RespTypes.ParaError, "账号/密码错误!")); } if (!identityRes.IsSuccess()) { return(new PortalTokenResp().WithResp(identityRes)); } if (isFromThirdBind) { var bindRes = await BindTempOauthUserToUser(user.id); if (!bindRes.IsSuccess()) { return(new PortalTokenResp().WithResp(bindRes)); } plat = bindRes.data; } PortalEvents.TriggerLoginEvent(identityRes.data, CoreAppContext.Identity); return(GeneratePortalToken(identityRes.data, plat)); }
/// <summary> /// 根据第三方信息处理登录或注册 /// (如果未绑定过系统账号,根据配置处理是否默认注册绑定 /// </summary> /// <param name="plat"></param> /// <param name="code"></param> /// <param name="state"></param> /// <param name="authType"></param> /// <returns></returns> private async Task <PortalTokenResp> OauthRegLogin(SocialPlatform plat, string code, string state, PortalAuthorizeType authType) { // 先获取第三方账号最新信息,更新至本地 var oauthUserRes = await AddOrUpdateOauthUser(plat, code, state); if (!oauthUserRes.IsSuccess()) { return(new PortalTokenResp().WithResp(oauthUserRes)); // oauthUserRes.ConvertToResultInherit<PortalTokenResp>(); } // 【已绑定过的用户】 执行登录 var oauthUser = oauthUserRes.data; if (oauthUser.owner_uid > 0) { // 尝试直接登录 var userRes = await UserInfoRep.Instance.GetById(oauthUser.owner_uid); return(!userRes.IsSuccess() ? new PortalTokenResp().WithResp(userRes) : await LoginFinallyExecute(userRes.data, authType, false, plat)); } // 管理员只能通过第三方绑定信息登录,如果没有,登录失败 if (authType == PortalAuthorizeType.Admin) { return new PortalTokenResp() { ret = (int)RespTypes.ParaError, msg = "非管理员账号,登录失败!" } } ; // 【已绑定过的用户】 根据系统配置,检查是否默认绑定注册 var regConfig = GetOauthRegConfig(); if (regConfig.OauthRegisterType == OauthRegisterType.JustRegister) { return(await OauthReg(oauthUser)); } // 执行第三方临时授权,返回临时授权后通知前端,执行绑定相关操作 oauthUser.status = regConfig.OauthRegisterType == OauthRegisterType.Bind ? UserStatus.WaitOauthBind : UserStatus.WaitOauthChooseBind; var ide = InitialOauthTempIdentity(oauthUser, plat); PortalEvents.TriggerOauthTempLoginEvent(ide.data, AppReqContext.Identity, plat); return(GeneratePortalToken(ide.data, plat)); }
private async Task <PortalTokenResp> RegFinallyExecute(UserInfoBigMo user, PortalAuthorizeType authType, bool isFromBind = false, SocialPlatform plat = SocialPlatform.None) { var idRes = await UserInfoRep.Instance.Add(user); if (!idRes.IsSuccess()) { return(new PortalTokenResp().WithResp(idRes)); } if (isFromBind) { var bindRes = await BindTempOauthUserToUser(user.id); if (!bindRes.IsSuccess()) { return(new PortalTokenResp().WithResp(bindRes)); //bindRes; } plat = bindRes.data; } user.pass_word = null; var identity = new UserIdentity() { auth_type = authType, id = user.id.ToString(), name = user.nick_name, avatar = user.avatar }; PortalEvents.TriggerRegisterEvent(identity, plat, CoreAppContext.Identity); return(GeneratePortalToken(identity, plat)); ; }
public JsonResult AddEvents(EventsViewModel eventsViewModel) { eventsViewModel.EventStartDate = eventsViewModel.EventStartDate.AddDays(1); eventsViewModel.EventEndDate = eventsViewModel.EventEndDate.AddDays(1); var token = _tokenValidator.Validate(HttpContext); if (!token.Success) { return(Json(new ReturnData <string> { Success = false, NotAuthenticated = true, Message = $"Unauthorized:-{token.Message}", })); } if (token.Role == Role.Student || token.Role == Role.Applicant) { return(Json(new ReturnData <string> { Success = false, NotAuthenticated = true, Message = "Sorry, you are not authorized to access this page", })); } var typeId = eventsViewModel.portalEventsTypeId ?? 0; eventsViewModel.DateCreated = DateTime.UtcNow; if (typeId == 0) { return(Json(new ReturnData <string> { Success = false, Message = "Please select event category" })); } try { var events = new PortalEvents { EventTitle = eventsViewModel?.EventTitle ?? "", EventDesc = eventsViewModel?.EventDesc ?? "", CreatedBy = eventsViewModel.CreatedBy, DateCreated = eventsViewModel.DateCreated, EventStartDate = eventsViewModel.EventStartDate, EventEndDate = eventsViewModel.EventEndDate, SendEmailFlag = eventsViewModel.SendEmailFlag, TargetAudience = eventsViewModel.TargetAudience, PortalEventTypeId = eventsViewModel.portalEventsTypeId, EventVenue = eventsViewModel?.EventVenue ?? "", TargetGroups = eventsViewModel?.TargetGroups ?? "", Campus = eventsViewModel?.Campus ?? "", Department = eventsViewModel?.Department ?? "", School = eventsViewModel?.School ?? "", YearOfStudy = eventsViewModel?.YearOfStudy ?? "" }; if (eventsViewModel.Id.HasValue && eventsViewModel.Id.Value > 0) { events.Id = events.Id; _context.PortalEvents.Update(events); } else { _context.PortalEvents.Add(events); } if (eventsViewModel.SendEmailFlag) { var users = _context.Users.Where(u => u.UserGroupsId == eventsViewModel.TargetAudience).ToList(); foreach (var user in users) { var emailContent = new MailsViewModel { UserCode = user?.UserName ?? "", Firstname = "", Code = eventsViewModel?.EventDesc ?? "", Email = user.Email, MailMethod = MailSendMethod.EventPosting, PortalUrl = eventsViewModel?.PortalUrl ?? "", Subject = eventsViewModel?.EventTitle ?? "" }; emailSender.SendEmail(emailContent); } } _context.SaveChanges(); return(Json(new ReturnData <string> { Success = true, Message = "Successful" })); } catch (Exception ex) { return(Json(new ReturnData <string> { Success = false, Message = "An error occurred,please retry : " + ex.Message })); } }