예제 #1
0
        public async Task <IActionResult> ResetAsync([FromBody, Required] ResetPasswordBody resetPasswordData)
        {
            if (!Utils.IsValidEmail(resetPasswordData.Email))
            {
                return(BadRequest(new ErrorResponse {
                    Error = "Invalid email"
                }));
            }

            User user = await _context.Users.FirstOrDefaultAsync(x => x.Email == resetPasswordData.Email.ToUpperInvariant());

            if (user == null)
            {
                return(NotFound(new ErrorResponse {
                    Error = "Email not found"
                }));
            }

            string code = Code.Generate();

            _context.ForgotPasswordRequests.Add(new ForgotPasswordRequest
            {
                Ip          = this.Request.HttpContext.Connection.RemoteIpAddress.ToString(),
                Code        = code,
                RequestDate = DateTimeOffset.UtcNow,
                UserFK      = user.Id
            });
            await _context.SaveChangesAsync();

            await Utils.SendEmailAsync(
                resetPasswordData.Email,
                "[ProMotion] Mudança de senha",
                $"Para alterar sua senha, utilize o seguinte código: {code}<br />Caso não tenha sido você que fez essa requisição, desconsidere este e-mail ou entre em contato com o suporte."
                );

            return(Ok());
        }
 /// <summary>
 /// Reset a lab virtual machine password.
 /// </summary>
 /// <remarks>
 /// Resets a lab virtual machine password.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='body'>
 /// The request body.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group. The name is case insensitive.
 /// </param>
 /// <param name='labName'>
 /// The name of the lab that uniquely identifies it within containing lab
 /// account. Used in resource URIs.
 /// </param>
 /// <param name='virtualMachineName'>
 /// The ID of the virtual machine that uniquely identifies it within the
 /// containing lab. Used in resource URIs.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task BeginResetPasswordAsync(this IVirtualMachinesOperations operations, ResetPasswordBody body, string resourceGroupName, string labName, string virtualMachineName, CancellationToken cancellationToken = default(CancellationToken))
 {
     (await operations.BeginResetPasswordWithHttpMessagesAsync(body, resourceGroupName, labName, virtualMachineName, null, cancellationToken).ConfigureAwait(false)).Dispose();
 }
 /// <summary>
 /// Reset a lab virtual machine password.
 /// </summary>
 /// <remarks>
 /// Resets a lab virtual machine password.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='body'>
 /// The request body.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group. The name is case insensitive.
 /// </param>
 /// <param name='labName'>
 /// The name of the lab that uniquely identifies it within containing lab
 /// account. Used in resource URIs.
 /// </param>
 /// <param name='virtualMachineName'>
 /// The ID of the virtual machine that uniquely identifies it within the
 /// containing lab. Used in resource URIs.
 /// </param>
 public static void BeginResetPassword(this IVirtualMachinesOperations operations, ResetPasswordBody body, string resourceGroupName, string labName, string virtualMachineName)
 {
     operations.BeginResetPasswordAsync(body, resourceGroupName, labName, virtualMachineName).GetAwaiter().GetResult();
 }