예제 #1
0
        public static ApplicationDbContext Create()
        {
            // todo add settings where appropriate to switch server & database in your own application

            var    baseConnectionString = WebConfigExtensions.GetFromAppSettings("MongoDB-ConnectionString");
            var    user          = WebConfigExtensions.GetFromAppSettings("MongoDB-User");
            var    password      = WebConfigExtensions.GetFromAppSettings("MongoDB-Password");
            var    mongoDatabase = WebConfigExtensions.GetFromAppSettings("MongoDB-Database");
            string credentials;

            if (!String.IsNullOrEmpty(user) && !String.IsNullOrEmpty(password))
            {
                credentials = user + ":" + password + "@";
            }
            else
            {
                credentials = "";
            }

            var mongoClient = new MongoClient(credentials + baseConnectionString);
            var database    = mongoClient.GetServer().GetDatabase(mongoDatabase);
            var users       = database.GetCollection <IdentityUser>("aspnet-identity-users");
            var roles       = database.GetCollection <IdentityRole>("aspnet-identity-roles");
            var claims      = database.GetCollection <IdentityUserClaim>("aspnet-identity-claims");
            var client      = database.GetCollection <IdentityClient>("aspnet-identity-client");

            return(new ApplicationDbContext(users, roles, claims, client));
        }
예제 #2
0
        public EmailService()
        {
            IsEnabled = WebConfigExtensions.GetFromAppSettings("EmailService-Enabled").TryParseBool();
            if (!IsEnabled)
            {
                return;
            }

            SenderEmail = WebConfigExtensions.GetFromAppSettings("EmailService-SenderEmail");
            SenderName  = WebConfigExtensions.GetFromAppSettings("EmailService-SenderName");
            Subject     = WebConfigExtensions.GetFromAppSettings("EmailService-Subject");
            User        = WebConfigExtensions.GetFromAppSettings("EmailService-LoginUser");
            Password    = WebConfigExtensions.GetFromAppSettings("EmailService-LoginPassword");
        }
예제 #3
0
        public Task SendAsync(IdentityMessage message)
        {
            var isEnabled = WebConfigExtensions.GetFromAppSettings("SmsService-Enabled").TryParseBool();

            if (!isEnabled)
            {
                return(Task.FromResult(0));
            }

            // Utilizando TWILIO como SMS Provider.
            // https://www.twilio.com/docs/quickstart/csharp/sms/sending-via-rest

            string accountSid  = WebConfigExtensions.GetFromAppSettings("SmsService-AccountSid");
            string authToken   = WebConfigExtensions.GetFromAppSettings("SmsService-AuthToken");
            string phoneNumber = WebConfigExtensions.GetFromAppSettings("SmsService-PhoneNumber");

            var client = new TwilioRestClient(accountSid, authToken);

            client.SendMessage(phoneNumber, message.Destination, message.Body);

            return(Task.FromResult(0));
        }
예제 #4
0
        /// <summary>
        /// Implementação de e-mail manual
        /// </summary>
        private Task SendMail(IdentityMessage message)
        {
            var smtpHost = WebConfigExtensions.GetFromAppSettings("EmailService-SmtpHost");
            var smtpPort = WebConfigExtensions.GetFromAppSettings("EmailService-SmtpPort").TryParseInt();


            var mailMessage = new MailMessage();
            var text        = HttpUtility.HtmlEncode(message.Body);

            mailMessage.To.Add(new MailAddress(message.Destination));
            mailMessage.Subject = Subject;
            mailMessage.From    = new MailAddress(SenderEmail, SenderName);
            mailMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(text, null, MediaTypeNames.Text.Plain));
            mailMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(text, null, MediaTypeNames.Text.Html));


            var smtpClient = new SmtpClient
            {
                UseDefaultCredentials = false,
                DeliveryMethod        = SmtpDeliveryMethod.Network,
                EnableSsl             = true,
                Port        = smtpPort,
                Host        = smtpHost,
                Credentials = new NetworkCredential(User, Password)
            };

            try
            {
                smtpClient.Send(mailMessage);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }

            return(Task.FromResult(0));
        }
예제 #5
0
        private void SetSocialLogins(ref IAppBuilder app)
        {
            #region Microsoft Account
            var microsoftLoginEnabled = WebConfigExtensions.GetFromAppSettings("MicrosoftLogin-Enabled").TryParseBool();
            if (microsoftLoginEnabled)
            {
                app.UseMicrosoftAccountAuthentication(
                    clientId: WebConfigExtensions.GetFromAppSettings("MicrosoftLogin-Id"),
                    clientSecret: WebConfigExtensions.GetFromAppSettings("MicrosoftLogin-Secret"));
            }
            #endregion

            #region Twitter
            var twitterLoginEnabled = WebConfigExtensions.GetFromAppSettings("TwitterLogin-Enabled").TryParseBool();
            if (twitterLoginEnabled)
            {
                app.UseTwitterAuthentication(
                    consumerKey: WebConfigExtensions.GetFromAppSettings("TwitterLogin-Key"),
                    consumerSecret: WebConfigExtensions.GetFromAppSettings("TwitterLogin-Secret"));
            }
            #endregion

            #region Google
            var googleLoginEnabled = WebConfigExtensions.GetFromAppSettings("GoogleLogin-Enabled").TryParseBool();
            if (googleLoginEnabled)
            {
                app.UseGoogleAuthentication(
                    clientId: WebConfigExtensions.GetFromAppSettings("GoogleLogin-Id"),
                    clientSecret: WebConfigExtensions.GetFromAppSettings("GoogleLogin-Secret"));
            }
            #endregion

            #region Facebook
            var facebookLoginEnabled = WebConfigExtensions.GetFromAppSettings("FacebookLogin-Enabled").TryParseBool();
            if (facebookLoginEnabled)
            {
                var fao = new FacebookAuthenticationOptions
                {
                    AppId     = WebConfigExtensions.GetFromAppSettings("FacebookLogin-Id"),
                    AppSecret = WebConfigExtensions.GetFromAppSettings("FacebookLogin-Secret")
                };
                fao.Scope.Add("email");
                fao.Scope.Add("basic_info");
                fao.Provider = new FacebookAuthenticationProvider()
                {
                    OnAuthenticated = (context) =>
                    {
                        context.Identity.AddClaim(new System.Security.Claims.Claim("urn:facebook:access_token", context.AccessToken, XmlSchemaString, "Facebook"));
                        foreach (var x in context.User)
                        {
                            var    claimType  = string.Format("urn:facebook:{0}", x.Key);
                            string claimValue = x.Value.ToString();
                            if (!context.Identity.HasClaim(claimType, claimValue))
                            {
                                context.Identity.AddClaim(new System.Security.Claims.Claim(claimType, claimValue, XmlSchemaString, "Facebook"));
                            }
                        }
                        return(Task.FromResult(0));
                    }
                };

                fao.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;
                app.UseFacebookAuthentication(fao);
            }
            #endregion
        }