예제 #1
0
 public EmailModel(
     UserManager <ApplicationUser> userManager,
     SignInManager <ApplicationUser> signInManager,
     ITemplatedEmailSender emailSender)
 {
     this._userManager   = userManager;
     this._signInManager = signInManager;
     this._emailSender   = emailSender;
 }
예제 #2
0
 public LoginModel(SignInManager <ApplicationUser> signInManager,
                   ILogger <LoginModel> logger,
                   UserManager <ApplicationUser> userManager,
                   ITemplatedEmailSender emailSender)
 {
     this._userManager   = userManager;
     this._signInManager = signInManager;
     this._emailSender   = emailSender;
     this._logger        = logger;
 }
예제 #3
0
 public RegisterModel(
     UserManager <ApplicationUser> userManager,
     SignInManager <ApplicationUser> signInManager,
     ILogger <RegisterModel> logger,
     ITemplatedEmailSender emailSender)
 {
     this._userManager   = userManager;
     this._signInManager = signInManager;
     this._logger        = logger;
     this._emailSender   = emailSender;
 }
예제 #4
0
        public static Task <EmailResult> SendConfirmPasswordAsync(this ITemplatedEmailSender email, string toAddress, string callbackUrl)
        {
            _values.Clear();
            _values["url"] = HtmlEncoder.Default.Encode(callbackUrl);

            return(email.SendTemplatedEmailAsync(
                       toAddress,
                       "Please confirm your email",
                       _confirmPassword,
                       _values
                       ));
        }
예제 #5
0
 public ModuleController(
     SignInManager <ApplicationUser> signIn,
     UserManager <ApplicationUser> users,
     ITemplatedEmailSender email,
     ILogger <ModuleController> logger
     )
 {
     this._signInManager = signIn;
     this._userManager   = users;
     this._logger        = logger;
     this._emailSender   = email;
 }
예제 #6
0
        public IActionResult Email(
            AdminSettingsViewModel settings,
            [FromServices] IFarmMasterSettingsAccessor dbSettings,
            [FromServices] ITemplatedEmailSender email
            )
        {
            if (!this.ModelState.IsValid)
            {
                return(this.RedirectToAction("Settings"));
            }

            var mutableSettings = dbSettings.Settings;

            mutableSettings.SmtpServer   = settings.Email.Smtp.Server;
            mutableSettings.SmtpPort     = settings.Email.Smtp.Port;
            mutableSettings.SmtpUsername = settings.Email.Smtp.Username;
            mutableSettings.SmtpPassword = settings.Email.Smtp.Password;

            dbSettings.Settings = mutableSettings;

            /**
             * Just so the flow of email is documented:
             *
             *  - ConfigureEmailOptions will update IOptions, IOptionsSnapshot, and IOptionsMonitor with values
             *    from the database.
             *
             *  - ITemplatedEmailSender doesn't recieve the new values automatically because ASP and its conflicting/open-ended documentation,
             *    so we need a way to notify it of changes to the config.
             *
             *  - Since this is the only place where the config can be changed, after updating the database with new settings (code above),
             *    we construct an IOptionSnapshot for the *first time for this request*, causing it to contain up-to-date info via ConfigureEmailOptions.
             *
             *  - After that, we call ReloadAsync on the ITemplatedEmailSender so it can update its connection.
             * */

            // This will cause all IConfigureOptions to be ran on the new values.
            var upToDateConfig = this.HttpContext.RequestServices.GetRequiredService <IOptionsSnapshot <EmailSenderConfig> >().Value;

            try
            {
                email.ReloadAsync(upToDateConfig).Wait();
            }
            catch (Exception ex)
            {
                settings.EmailError = ex.Message;
                return(this.View(VIEW_SETTINGS, settings));
            }

            return(this.RedirectToAction("Settings"));
        }
예제 #7
0
        public AccountController(
            UserManager <Member> aMemberManager,
            SignInManager <Member> aSignInManager,
            ITemplatedEmailSender aTemplatedEmailSender,
            DataProtectionPurposeStrings aDataProtectionPurposeStrings,
            IDataProtectionProvider aDataProtectionProvider

            )
        {
            _MemberManager        = aMemberManager;
            _SignInManager        = aSignInManager;
            _TemplatedEmailSender = aTemplatedEmailSender;
            _dataProtector        = aDataProtectionProvider.CreateProtector(aDataProtectionPurposeStrings.UserIdRouteValue);
        }
예제 #8
0
        public async Task <IActionResult> TestEmail(
            [FromServices] ITemplatedEmailSender email,
            [FromServices] UserManager <ApplicationUser> users
            )
        {
            var user = await users.GetUserAsync(this.User);

            var address = await users.GetEmailAsync(user);

            // This is so I can also test templates, as well as letting the user test their settings.
            var template = new EmailTemplate("<h1>{{ race }} are demons, change my mind. There's a link {{ @a#b?c=race }}</h1>");
            var values   = new EmailTemplateValues()
            {
                { "race", "Lalafells" }
            };
            var result = await email.SendTemplatedEmailAsync(address, "This is a test email", template, values);

            if (!result.Succeeded)
            {
                return(this.RedirectToAction("Settings", new { emailTestError = result.Error }));
            }

            return(this.RedirectToAction("Settings"));
        }
 public ForgotPasswordModel(UserManager <ApplicationUser> userManager, ITemplatedEmailSender emailSender)
 {
     this._userManager = userManager;
     this._emailSender = emailSender;
 }
예제 #10
0
 public RegisterConfirmationModel(UserManager <ApplicationUser> userManager, ITemplatedEmailSender sender)
 {
     this._userManager = userManager;
     this._sender      = sender;
 }