コード例 #1
0
        public virtual async Task <(LoginResult, TUser)> Login(LoginViewModal model)
        {
            if (AuthOptions.SetNameAsPhone)
            {
                model.UserName = RepositoryState.ParsePhone(model.UserName);
            }
            var user = _dbSet.Where(m => (m.UserName == model.UserName || m.Email == model.UserName) && m.Password == RepositoryState.GetHashString(model.Password)).FirstOrDefault();

            if (user == null)
            {
                throw new CoreException("User Name or Password not Found", 7);
            }

            if (AuthOptions.CheckDeviceId)
            {
                if (user.CheckDevice(model.DeviceId))
                {
                    user.ChangeLastIncome(model.DeviceId);
                    return(Login(user), user);
                }
                user.ShouldSendOtp = true;
                //TODO
                return(null, user);
            }
            return(Login(user), user);
        }
コード例 #2
0
        public async Task <RegisterResult> RegisterAsync(RegisterUser model)
        {
            RegisterResult result = new RegisterResult();

            if (AuthOptions.SetNameAsPhone)
            {
                model.UserName = RepositoryState.ParsePhone(model.UserName);
            }
            var user = _dbSet.FirstOrDefault(m => m.UserName == model.UserName || m.Email == model.UserName);

            if (user != null)
            {
                throw new CoreException("User Name or Password not Found", 7);
                return(result);
            }
            user = AddRegister(model);
            if (AuthOptions.SetNameAsPhone)
            {
                model.UserName = RepositoryState.ParsePhone(model.UserName);
                if (string.IsNullOrEmpty(model.UserName))
                {
                    throw new CoreException("UserName is Not Valid", 6);
                }
                user.PhoneNumber = model.UserName;
            }
            //_dbSet.Add(user);
            Add(user);
            result.IsRegister = true;
            result.Name       = user.UserName;
            return(result);
        }
コード例 #3
0
        public virtual async Task <NetResult <SuccessResult> > IsRegister(string userName)
        {
            SuccessResult result = new SuccessResult();

            try
            {
                if (AuthModalOption.SetNameAsPhone && !userName.Contains("@"))
                {
                    userName = RepositoryState.ParsePhone(userName);
                }
                var user = _user.GetFirst(m => m.UserName == userName || m.Email == userName);
                if (user == null)
                {
                    result.Success = false;
                }
                else
                {
                    result.Success = true;
                }
                return(result);
            }
            catch (Exception ext)
            {
                result.Success = false;
                //return ext;
            }
            return(result);
        }
コード例 #4
0
        public async Task <ResponseData> SendOtp(string phoneNumber, string orginator = "3700")
        {
            try
            {
                var partner = this.GetProject(_project, DefaultRest);
                var message = SendModal.Create(partner);
                partner.RunConfig(_confList, message);
                message.Messages.Add(new Message()
                {
                    Recipient = RepositoryState.ParsePhone(phoneNumber), MessageId = "123456", Sms = new Sms()
                    {
                        Originator = orginator, Content = new Entity.Sms.Content()
                    }
                });
                RestViewModal viewModal = new RestViewModal()
                {
                    Header = Request.Headers.ToDict()
                };
                var result = await _message.SendOtp(partner, message, viewModal);

                return(this.GetResponse(result));
            }
            catch (Exception ext)
            {
                return(this.GetResponse());
            }
        }
コード例 #5
0
        public virtual async Task <TUser> GetByUserName(string userName)
        {
            TUser user = null;

            if (AuthOptions.SetNameAsPhone)
            {
                user = _dbSet.FirstOrDefault(m => m.UserName == RepositoryState.ParsePhone(userName));
            }
            else
            {
                user = _dbSet.FirstOrDefault(m => m.UserName == userName);
            }
            return(user);
            //return _dbSet.FirstOrDefault(m => m.UserName == userName);
        }
コード例 #6
0
        /// <summary>
        ///  this Method use for Activate user Using sms confirm
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <LoginResult> ActivateUser(ActivateUserModel model)
        {
            TUser user = null;

            if (AuthOptions.SetNameAsPhone)
            {
                user = GetFirst(m => m.UserName == RepositoryState.ParsePhone(model.UserName));
            }
            else
            {
                user = GetFirst(m => m.UserName == model.UserName);
            }
            if (CheckUserOtp(user, model.Otp))
            {
                user.AddDeviceId(model.DeviceId, model.DeviceName);
                await Update(user);

                return(Login(user));
            }
            else
            {
                throw new CoreException("Activate User", 1);
            }
        }