/// <summary> /// 发送动态码 /// </summary> /// <param name="loginName"></param> /// <param name="type"></param> /// <returns></returns> public async Task <Resp> SendCode(string loginName, RegLoginType type) { var code = NumHelper.RandomNum(); var notifyMsg = new NotifyReq { targets = new List <string>() { loginName }, body_paras = new Dictionary <string, string> { { "code", code } }, t_code = type == RegLoginType.Mobile ? DirConfigKeys.plugs_notify_sms_portal_tcode : DirConfigKeys.plugs_notify_email_portal_tcode }; var res = await InsContainer <INotifyServiceProxy> .Instance.Send(notifyMsg); if (!res.IsSuccess()) { return(res ?? new Resp().WithResp(RespTypes.UnKnowSource, "未知类型!")); } var key = string.Concat(CacheKeys.Portal_Passcode_ByLoginName, loginName); await CacheHelper.SetAbsoluteAsync(key, code, TimeSpan.FromMinutes(2)); return(res); }
/// <summary> /// 动态码注册 /// </summary> /// <returns></returns> public async Task <PortalTokenResp> CodeRegOrLogin(string name, string code, RegLoginType type, bool isFromThirdBind) { 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(await LoginFinallyExecute(userRes.data, PortalAuthorizeType.User, isFromThirdBind)); } if (!userRes.IsRespType(RespTypes.ObjectNull)) { return new PortalTokenResp() { ret = userRes.ret, msg = "账号密码错误!" } } ; // 执行注册 var userInfo = GetRegisterUserInfo(name, string.Empty, type); return(await RegFinallyExecute(userInfo, PortalAuthorizeType.User, isFromThirdBind)); }
/// <summary> /// 判断账号是否可用于注册 /// </summary> /// <param name="type"></param> /// <param name="value"></param> /// <returns></returns> public async Task <ResultMo> CheckIfCanRegiste(RegLoginType type, string value) { var sql = $"select count(1) from {m_TableName} where {(type == RegLoginType.Email ? "`email` " : "`mobile` ")} =@val"; return(await ExcuteReadeResAsync(async con => { var count = await con.ExecuteScalarAsync <int>(sql, new { val = value }); return count > 0 ? new ResultMo(ResultTypes.ObjectExsit, "账号已存在,无法注册!") : new ResultMo(); })); }
/// <summary> /// 注册用户信息 /// </summary> /// <param name="name">注册的账号信息</param> /// <param name="passWord">密码</param> /// <param name="type">注册类型</param> /// <returns></returns> public async Task <UserTokenResp> UserReg(string name, string passWord, RegLoginType type) { var checkRes = await CheckIfCanReg(type, name); if (!checkRes.IsSuccess()) { return(checkRes.ConvertToResult <UserTokenResp>()); } return(await RegExcute(name, passWord, type)); }
public async Task <ResultMo> SendVertifyCode(string name, RegLoginType type) { var checkRes = CheckNameType(name, type); if (!checkRes.IsSuccess()) { return(checkRes); } return(await service.SendVertifyCode(name, type)); }
/// <summary> /// 直接通过账号密码注册用户信息 /// </summary> /// <param name="name"></param> /// <param name="password"></param> /// <param name="type"></param> /// <param name="isFromThirdBind"> 是否来自第三方授权后绑定页的登录注册请求 </param> /// <returns></returns> public async Task <PortalTokenResp> PwdReg(string name, string password, RegLoginType type, bool isFromThirdBind = false) { var checkRes = await CheckIfCanReg(type, name); if (!checkRes.IsSuccess()) { return(new PortalTokenResp().WithResp(checkRes)); // checkRes.ConvertToResultInherit<PortalTokenResp>(); } var userInfo = GetRegisterUserInfo(name, password, type); userInfo.status = UserStatus.WaitActive;// 默认待激活状态 return(await RegFinallyExecute(userInfo, PortalAuthorizeType.User, isFromThirdBind)); }
/// <summary> /// 检查账号是否可以注册 /// </summary> /// <param name="type"></param> /// <param name="value"></param> /// <returns></returns> public async Task <Resp> CheckIfCanReg(RegLoginType type, string value) { var userRes = await UserInfoRep.Instance.GetUserByLoginType(value, type); if (userRes.IsRespType(RespTypes.OperateObjectNull)) { return(new Resp()); } return(userRes.IsSuccess() ? new Resp(RespTypes.OperateObjectExist, "账号已存在,无法注册!") : new Resp().WithResp(userRes)); }
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="name"></param> /// <param name="passWord"></param> /// <param name="type"></param> /// <returns></returns> public async Task <UserTokenResp> UserLogin(string name, string passWord, RegLoginType type) { var userRes = await UserInfoRep.Instance.GetUserByLoginType(name, type); if (!userRes.IsSuccess()) { return(userRes.ConvertToResult <UserTokenResp>()); } var user = userRes.data; return(Md5.EncryptHexString(passWord) != user.pass_word ? new UserTokenResp(ResultTypes.UnAuthorize, "账号密码不正确!") : LoginExcute(user)); }
/// <summary> /// 动态码注册 /// </summary> /// <returns></returns> public async Task <PortalTokenResp> CodeReg(string name, string code, RegLoginType type, bool isFromThirdBind) { var codeRes = await CheckPasscode(name, code); if (!codeRes.IsSuccess()) { return(new PortalTokenResp().WithResp(codeRes)); } var checkRes = await CheckIfCanReg(type, name); if (!checkRes.IsSuccess()) { return(new PortalTokenResp().WithResp(codeRes)); } // 执行注册 var userInfo = GetRegisterUserInfo(name, string.Empty, type); return(await RegFinallyExecute(userInfo, PortalAuthorizeType.User, isFromThirdBind)); }
/// <summary> /// 检查验证登录类型 /// </summary> /// <param name="name"></param> /// <param name="type"></param> /// <returns></returns> private static Resp CheckNameType(string name, RegLoginType type) { if (string.IsNullOrEmpty(name)) { return(new Resp(RespTypes.ParaError, "name 不能为空!")); } if (!Enum.IsDefined(typeof(RegLoginType), type)) { return(new Resp(RespTypes.ParaError, "未知的账号类型!")); } var validator = new DataTypeAttribute( type == RegLoginType.Mobile ? DataType.PhoneNumber : DataType.EmailAddress); return(!validator.IsValid(name) ? new Resp(RespTypes.ParaError, "请输入正确的手机或邮箱!") : new Resp()); }
/// <summary> /// 动态码登录 /// 如果用户不存在,则自动注册 /// </summary> /// <param name="name"></param> /// <param name="passcode"></param> /// <param name="type"></param> /// <returns></returns> public async Task <UserTokenResp> CodeLogin(string name, string passcode, RegLoginType type) { var codeRes = CheckPasscode(name, passcode); if (!codeRes.IsSuccess()) { return(codeRes.ConvertToResult <UserTokenResp>()); } var userRes = await UserInfoRep.Instance.GetUserByLoginType(name, type); if (!userRes.IsSuccess() && !userRes.IsResultType(ResultTypes.ObjectNull)) { return(userRes.ConvertToResult <UserTokenResp>()); } // 执行注册 if (userRes.IsResultType(ResultTypes.ObjectNull)) { return(await RegExcute(name, null, type)); } // 执行登录 return(LoginExcute(userRes.data)); }
// 动态码验证登录 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)); }
public async Task <Resp <UserInfoBigMo> > GetUserByLoginType(string name, RegLoginType type) { return(await(type == RegLoginType.Mobile ? Get(u => u.mobile == name && u.owner_tid == OwnerTId && u.status >= UserStatus.Locked) : Get(u => u.email == name && u.owner_tid == OwnerTId && u.status >= UserStatus.Locked))); }
/// <summary> /// 检查账号是否可以注册 /// </summary> /// <param name="type"></param> /// <param name="value"></param> /// <returns></returns> public async Task <ResultMo> CheckIfCanRegiste(RegLoginType type, string value) { return(await InsContainer <IUserInfoRep> .Instance.CheckIfCanRegiste(type, value)); }
private static UserInfoBigMo GetRegisteUserInfo(string value, string passWord, RegLoginType type) { var sysInfo = MemberShiper.AppAuthorize; var userInfo = new UserInfoBigMo { create_time = DateTime.Now.ToUtcSeconds(), app_source = sysInfo.AppSource, app_version = sysInfo.AppVersion }; if (type == RegLoginType.Email) { userInfo.email = value; userInfo.status = (int)MemberStatus.WaitConfirm; } else { userInfo.mobile = value; } if (type != RegLoginType.MobileCode) { userInfo.pass_word = Md5.EncryptHexString(passWord); } return(userInfo); }
/// <summary> /// 注册用户信息 /// </summary> /// <param name="value">注册的账号信息</param> /// <param name="passWord">密码</param> /// <param name="passCode"> 验证码(手机号注册时需要 </param> /// <param name="type">注册类型</param> /// <returns></returns> public async Task <ResultMo <UserInfoMo> > RegisteUser(string value, string passWord, string passCode, RegLoginType type) { // todo 如果是手机号注册,检查验证码 var checkRes = await CheckIfCanRegiste(type, value); if (!checkRes.IsSuccess()) { return(checkRes.ConvertToResultOnly <UserInfoMo>()); } var userInfo = GetRegisteUserInfo(value, passWord, type); var idRes = await InsContainer <IUserInfoRep> .Instance.Insert(userInfo); if (!idRes.IsSuccess()) { return(idRes.ConvertToResultOnly <UserInfoMo>()); } userInfo.Id = idRes.id; MemberEvents.TriggerUserRegiteEvent(userInfo, MemberShiper.AppAuthorize); return(new ResultMo <UserInfoMo>(userInfo.ConvertToMo())); }
public async Task <ResultMo <UserInfoMo> > LoginUser(string name, string passWord, RegLoginType type) { var rep = InsContainer <IUserInfoRep> .Instance; var userRes = await(type == RegLoginType.Mobile ? rep.Get <UserInfoBigMo>(u => u.mobile == name) : rep.Get <UserInfoBigMo>(u => u.email == name)); if (!userRes.IsSuccess()) { return(userRes.ConvertToResultOnly <UserInfoMo>()); } if (Md5.EncryptHexString(passWord) != userRes.data.pass_word) { return(new ResultMo <UserInfoMo>(ResultTypes.UnAuthorize, "账号密码不正确!")); } MemberEvents.TriggerUserLoginEvent(userRes.data, MemberShiper.AppAuthorize); var checkRes = CheckMemberStatus(userRes.data.status); return(checkRes.IsSuccess() ? new ResultMo <UserInfoMo>(userRes.data.ConvertToMo()) : checkRes.ConvertToResultOnly <UserInfoMo>()); }
/// <summary> /// 管理员动态码登录 /// </summary> /// <returns></returns> public Task <PortalTokenResp> CodeAdminLogin(string name, string code, RegLoginType type, bool isFromThirdBind = false) { return(CodeLogin(name, code, type, PortalAuthorizeType.Admin, isFromThirdBind)); }
private static async Task <UserTokenResp> RegExcute(string name, string passWord, RegLoginType type) { var userInfo = GetRegisteUserInfo(name, passWord, type); var idRes = await UserInfoRep.Instance.Add(userInfo); if (!idRes.IsSuccess()) { return(idRes.ConvertToResult <UserTokenResp>()); } userInfo.id = idRes.id; MemberEvents.TriggerUserRegiteEvent(userInfo, MemberShiper.AppAuthorize); return(BindOauthAndGenerateUserToken(userInfo, MemberAuthorizeType.User)); }
private static UserInfoBigMo GetRegisteUserInfo(string value, string passWord, RegLoginType type) { var sysInfo = MemberShiper.AppAuthorize; var userInfo = new UserInfoBigMo { app_source = sysInfo.AppSource, app_version = sysInfo.AppVersion, tenant_id = sysInfo.TenantId }; if (type == RegLoginType.Mobile) { userInfo.mobile = value; } else { userInfo.email = value; } if (!string.IsNullOrEmpty(passWord)) { userInfo.pass_word = Md5.EncryptHexString(passWord); } SetBaseInfo(userInfo); return(userInfo); }
/// <summary> /// 发送验证码 /// </summary> /// <param name="name"></param> /// <param name="type"></param> /// <returns></returns> public async Task <ResultMo> SendVertifyCode(string name, RegLoginType type) { // todo 发送验证码 return(new ResultMo()); }
public async Task <ResultMo <UserInfoBigMo> > GetUserByLoginType(string name, RegLoginType type) { return(await(type == RegLoginType.Mobile ? Get(u => u.mobile == name) : Get(u => u.email == name))); }
/// <summary> /// 注册用户信息 /// </summary> /// <param name="value">注册的账号信息</param> /// <param name="passCode">密码</param> /// <param name="type">注册类型</param> /// <param name="auInfo">注册的系统信息</param> /// <returns></returns> public async Task <ResultMo <UserInfoMo> > RegisteUser(string value, string passCode, RegLoginType type, SysAuthorizeInfo auInfo) { var checkRes = await CheckIfCanRegiste(type, value); if (!checkRes.IsSuccess) { return(checkRes.ConvertToResultOnly <UserInfoMo>()); } var userInfo = new UserInfoBigMo(); if (type == RegLoginType.Email) { userInfo.email = value; } else { userInfo.mobile = value; } if (type != RegLoginType.MobileCode) { userInfo.pass_word = Md5.HalfEncryptHexString(passCode); } var idRes = await Rep <IUserInfoRep> .Instance.Insert(userInfo); if (!idRes.IsSuccess) { return(idRes.ConvertToResultOnly <UserInfoMo>()); } userInfo.Id = idRes.Id; // todo 触发新用户注册事件 return(new ResultMo <UserInfoMo>(userInfo)); }
/// <summary> /// 管理员用户密码登录 /// </summary> /// <param name="name"></param> /// <param name="password"></param> /// <param name="type"></param> /// <param name="isFromThirdBind"> 是否来自第三方授权后绑定页的登录注册请求 </param> /// <returns></returns> public Task <PortalTokenResp> PwdAdminLogin(string name, string password, RegLoginType type, bool isFromThirdBind = false) { return(PwdLogin(name, password, type, PortalAuthorizeType.Admin, isFromThirdBind)); }
/// <summary> /// 注册用户信息 /// </summary> /// <param name="value">注册的账号信息</param> /// <param name="passWord">密码</param> /// <param name="passCode"> 验证码(手机号注册时需要 </param> /// <param name="type">注册类型</param> /// <returns></returns> public async Task <ResultMo <UserInfoMo> > RegisteUser(string value, string passWord, string passCode, RegLoginType type) { var checkRes = await CheckIfCanRegiste(type, value); if (!checkRes.IsSuccess()) { return(checkRes.ConvertToResultOnly <UserInfoMo>()); } // todo 检查验证码 var userInfo = new UserInfoBigMo(); if (type == RegLoginType.Email) { userInfo.email = value; } else { userInfo.mobile = value; } if (type != RegLoginType.MobileCode) { userInfo.pass_word = Md5.HalfEncryptHexString(passWord); } var idRes = await InsContainer <IUserInfoRep> .Instance.Insert(userInfo); if (!idRes.IsSuccess()) { return(idRes.ConvertToResultOnly <UserInfoMo>()); } userInfo.Id = idRes.id; MemberEvents.TriggerUserRegiteEvent(userInfo, MemberShiper.AppAuthorize); return(new ResultMo <UserInfoMo>(userInfo)); }
private static UserInfoBigMo GetRegisterUserInfo(string value, string passWord, RegLoginType type) { var sysInfo = CoreAppContext.Identity; var userInfo = new UserInfoBigMo(); userInfo.InitialBaseFromContext(); switch (type) { case RegLoginType.Mobile: userInfo.mobile = value; break; case RegLoginType.Email: userInfo.email = value; break; case RegLoginType.ThirdName: userInfo.nick_name = value; break; } if (!string.IsNullOrEmpty(passWord)) { userInfo.pass_word = Md5.EncryptHexString(passWord); } return(userInfo); }