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)); }
private static async Task <Resp <UserIdentity> > GetAuthIdentityById(long userId, PortalAuthorizeType authType, SocialPlatform fromPlat) { Resp <UserIdentity> identityRes; switch (authType) { case PortalAuthorizeType.Admin: case PortalAuthorizeType.SuperAdmin: var adminRes = await AdminInfoRep.Instance.GetAdminByUId(userId); if (!adminRes.IsSuccess()) { return(new Resp <UserIdentity>().WithResp(RespTypes.UnLogin, "用户未登录!")); } identityRes = InitialAdminIdentity(adminRes.data, fromPlat); break; case PortalAuthorizeType.User: var userRes = await UserInfoRep.Instance.GetById(userId); if (!userRes.IsSuccess()) { return(new Resp <UserIdentity>().WithResp(RespTypes.UnLogin, "用户未登录!")); } identityRes = InitialUserIdentity(userRes.data, fromPlat); break; default: identityRes = new Resp <UserIdentity>().WithResp(RespTypes.UnLogin, "用户未登录!"); break; } if (!string.IsNullOrEmpty(identityRes.data?.avatar)) { identityRes.data.avatar = string.Concat(identityRes.data.avatar, ImageStyle.avatar_style); } return(identityRes); }
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)); ; }
// 动态码验证登录 private async Task <PortalTokenResp> CodeLogin(string name, string code, RegLoginType type, PortalAuthorizeType authType, bool isFromThirdBind = false) { var codeRes = await CheckPasscode(name, code); if (!codeRes.IsSuccess()) { return(new PortalTokenResp().WithResp(codeRes)); } var userRes = await UserInfoRep.Instance.GetUserByLoginType(name, type); if (!userRes.IsSuccess()) { return new PortalTokenResp() { ret = userRes.ret, msg = "账号或密码错误!" } } ; // 执行登录 return(await LoginFinallyExecute(userRes.data, authType, isFromThirdBind, SocialPlatform.None)); }
/// <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)); }
/// <summary> /// 功能权限验证 /// </summary> /// <param name="funcCode"></param> /// <param name="authType"> 要求的授权类型,默认为管理员类型 </param> public UserFuncMetaAttribute(string funcCode, PortalAuthorizeType authType = PortalAuthorizeType.Admin) { Order = -11; _funcCode = funcCode; AuthType = authType; }
/// <summary> /// 功能权限验证 /// </summary> /// <param name="authType"> 要求的授权类型</param> public UserFuncMetaAttribute(PortalAuthorizeType authType) : this(string.Empty, authType) { }
private async Task <PortalTokenResp> PwdLogin(string name, string password, RegLoginType type, PortalAuthorizeType authType, bool isFromThirdBind) { var userRes = await UserInfoRep.Instance.GetUserByLoginType(name, type); if (userRes.IsSuccess()) { var user = userRes.data; if (Md5.EncryptHexString(password) == user.pass_word) { return(await LoginFinallyExecute(user, authType, isFromThirdBind)); } } return(new PortalTokenResp(RespTypes.ParaError, "账号密码不正确!")); }
/// <summary> /// 功能权限要求 /// </summary> /// <param name="authType"></param> /// <param name="funcCode"></param> /// <param name="sceneCode"></param> public AskUserFunc(PortalAuthorizeType authType, string funcCode, string sceneCode) { func_code = funcCode; scene_code = sceneCode; auth_type = authType; }