コード例 #1
0
        public async Task <IActionResult> ResendCode([FromQuery] string phone)
        {
            try
            {
                SMSVerification model = await _unitOfWork.VerificationRepository.GetDbSet().SingleOrDefaultAsync(v => v.Phone == phone);

                if (model == null)
                {
                    return(BadRequest("Phone is not regestred yet"));
                }
                else
                {
                    long code = StaticTools.GenerateCode();
                    try
                    {
                        string response = await _messageService.SendSMS(phone, code);

                        model.Code = code;
                        _unitOfWork.VerificationRepository.Update(model);
                        _unitOfWork.Commit();
                        return(Ok("Code sent"));
                    }
                    catch (Exception ex)
                    {
                        return(BadRequest(ex.Message));
                    }
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(Problem(e.Message));
            }
        }
コード例 #2
0
        private async Task <IActionResult> AdminLoginHandler([FromQuery] string phone)
        {
            try
            {
                if (StaticTools.PhoneValidator(phone))
                {
                    User user = await _unitOfWork.UserRepository.GetDbSet().SingleOrDefaultAsync(u => u.Phone == phone);

                    long   code     = StaticTools.GenerateCode();
                    string response = await _messageService.SendSMS(phone, code);

                    if (user == null)
                    {
                        try
                        {
                            SMSVerification verification = new SMSVerification(code, phone);
                            User            newUser      = new User(phone)
                            {
                                Role = "Admin"
                            };
                            _unitOfWork.UserRepository.Insert(newUser);
                            verification.User = newUser;
                            _unitOfWork.VerificationRepository.Insert(verification);
                            _unitOfWork.Commit();
                            return(Ok("Code sent"));
                        }
                        catch (Exception)
                        {
                            _unitOfWork.Rollback();
                            return(Problem("Database error"));
                        }
                    }
                    else
                    {
                        SMSVerification verification = await _unitOfWork.VerificationRepository.GetDbSet().SingleOrDefaultAsync(v => v.User.Phone == phone);

                        try
                        {
                            verification.Code = code;
                            user.Role         = "Admin";
                            _unitOfWork.VerificationRepository.Update(verification);
                            _unitOfWork.UserRepository.Update(user);
                            _unitOfWork.Commit();
                            return(Ok("Code sent"));
                        }
                        catch (Exception)
                        {
                            _unitOfWork.Rollback();
                            return(Problem("Database error"));
                        }
                    }
                }
                else
                {
                    return(BadRequest(StaticTools.PhoneValidationError));
                }
            }
            catch (Exception e)
            {
                _logger.Log(LogLevel.Error, e, e.Message);
                return(Problem(e.Message));
            }
        }