Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        /// <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();
            }));
        }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        /// <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));
        }
Esempio n. 7
0
        /// <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));
        }
Esempio n. 8
0
        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, "账号密码不正确!"));
        }
Esempio n. 9
0
        /// <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));
        }
Esempio n. 10
0
        /// <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));
        }
Esempio n. 11
0
        /// <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());
        }
Esempio n. 12
0
        /// <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));
        }
Esempio n. 13
0
        //  动态码验证登录
        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));
        }
Esempio n. 14
0
 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)));
 }
Esempio n. 15
0
 /// <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));
 }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        /// <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()));
        }
Esempio n. 18
0
        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>());
        }
Esempio n. 19
0
 /// <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));
 }
Esempio n. 20
0
        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));
        }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
 /// <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());
 }
Esempio n. 23
0
 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)));
 }
Esempio n. 24
0
        /// <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));
        }
Esempio n. 25
0
 /// <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));
 }
Esempio n. 26
0
        /// <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));
        }
Esempio n. 27
0
        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);
        }