示例#1
0
        public async Task <IActionResult> SendSMS([FromBody] CustomSMSViewModel model)
        {
            bool success = Phone.TryParse(model.Phone, Core.REGION, out PhoneNumber phone);

            if (!success)
            {
                return(BadRequest("The inputed phone number was invalid"));
            }
            if (!Phone.IsValidNumber(phone))
            {
                return(BadRequest("The inputed phone number was invalid"));
            }

            success = await SmsService.SendMessage(model.Phone, model.Message);

            return(Ok());
        }
示例#2
0
        public async Task <IActionResult> GeneratePasswordResetSms([FromBody] CustomSMSViewModel model)
        {
            User user = await DataContext.Store.GetOneAsync <User>(u => u.PhoneNumber == model.Phone);

            if (user == null)
            {
                return(NotFound($"No User with that phone number could be found on this platform."));
            }

            string message = model.Message;

            OneTimePassword password = null;

            try
            {
                password = await Auth.GenerateOneTimePassword(user, OnePasswordType.Phone);

                UserOneTimePasswordModel context = Mapper.Map <UserOneTimePasswordModel>(user);
                context.OneTimePassword = password.Code;

                message = message.BindTo(context);
                Logger.LogWarning(user.FormattedPhoneNumber);
                Logger.LogWarning(message);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex, "An error occured while formatting a text message\n{0}", message);
                return(BadRequest("The format of the text message is invalid"));
            }

            bool success = await SmsService.SendMessage(user.FormattedPhoneNumber, message);

            if (!success)
            {
                return(BadRequest("An error occured while sending the password reset text message"));
            }

            return(Ok(Mapper.Map <OneTimePasswordViewModel>(password)));
        }