public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Insertar un nuevo usuario en la base de datos using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Comprobar si el usuario ya existe if (user == null) { // Insertar el nombre en la tabla de perfiles db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "El nombre de usuario ya existe. Escriba un nombre de usuario diferente."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Insert a new user into the database using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Check if user already exists if (user == null) { // Insert name into the profile table db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // 將新使用者插入資料庫 using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // 檢查使用者是否存在 if (user == null) { // 將名稱插入設定檔表格 db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "使用者名稱已經存在。請輸入不同的使用者名稱。"); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Добавление нового пользователя в базу данных using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Проверка наличия пользователя в базе данных if (user == null) { // Добавление имени в таблицу профиля db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "Имя пользователя уже существует. Введите другое имя пользователя."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Insérer un nouvel utilisateur dans la base de données using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Vérifier si l'utilisateur n'existe pas déjà if (user == null) { // Insérer le nom dans la table des profils db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "Le nom d'utilisateur existe déjà. Entrez un nom d'utilisateur différent."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmationCustom(RegisterExternalLoginModel model) { string provider = null; string providerUserId = null; provider = model.ExternalLoginData.Split('|')[0]; providerUserId = model.ExternalLoginData.Split('|')[1]; if (ModelState.IsValid) { // Insertar un nuevo usuario en la base de datos using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Comprobar si el usuario ya existe if (user == null) { // Insertar el nombre en la tabla de perfiles db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); Roles.AddUserToRole(model.UserName, "Usuario"); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToAction("index", "home")); } else { OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToAction("index", "home")); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = Url.Action("index", "home"); return(View(model)); }
public ActionResult ExternalLoginCallback(string returnUrl) { FacebookClient2017.RewriteRequest(); var regClients = OAuthWebSecurity.RegisteredClientData; AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } // Check database for entry for provider, userid var oAuthResult = MembershipService.ValidateOAuthUser(result, this.Session); if (oAuthResult.AccountLinked) { //Log the user in this.ValidateUser(oAuthResult.UserEmail, oAuthResult.HashedPassword); return(RedirectToLocal(returnUrl)); } //If account not already linked, then link them to the currently authenticated and logged in user if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return(RedirectToLocal(returnUrl)); } else { //User needs to register for a rooster account, direct them to registration process. string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; ViewBag.StatesList = WebUI.Common.Common.GetStates(); return(View("ExternalLoginConfirmation", new RegisterModelDTO { ExternalLoginData = loginData })); } }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider; string providerUserId; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Добавление нового пользователя в базу данных using (var db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault( u => string.Equals(u.UserName, model.UserName, StringComparison.CurrentCultureIgnoreCase)); // Проверка наличия пользователя в базе данных if (user == null) { // Добавление имени в таблицу профиля db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } ModelState.AddModelError("UserName", Resources.UserNameNotExists); } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public OAuthResult GetOAuthResult(string encryptedLoginData) { string provider = null; string providerUserId = null; var oAuth = new OAuthResult(); if (!TryDecryptProviderData(encryptedLoginData, out provider, out providerUserId)) { return(oAuth); } oAuth.IsValid = true; oAuth.Provider = provider; oAuth.ProviderUserId = providerUserId; oAuth.UserName = OAuthWebSecurity.GetUserName(provider, providerUserId); oAuth.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; oAuth.EncryptedLoginData = encryptedLoginData; return(oAuth); }
public List <AccountMembershipViewModel> GetAllRelatedAccountMembershipViewModels() { var result = new List <AccountMembershipViewModel>(); var listOAthMembership = this.Session.QueryOver <OAuthMembership>().Where(x => x.UserProfile.Id == User.Current.UserID).List(); if (listOAthMembership != null && listOAthMembership.Any()) { listOAthMembership.Each(x => { AuthenticationClientData clientData = OAuthWebSecurity.GetOAuthClientData(x.Provider); result.Add(new AccountMembershipViewModel() { ID = x.Id, OAuthProvider = x.Provider, OAuthProviderUserID = x.ProviderUserID, ProviderDisplayName = clientData.DisplayName, }); }); } return(result); }
public virtual ActionResult RemoveExternalLogins() { ICollection <OAuthAccount> accounts = OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name); var externalLogins = new List <ExternalLogin>(); foreach (OAuthAccount account in accounts) { AuthenticationClientData clientData = OAuthWebSecurity.GetOAuthClientData(account.Provider); externalLogins.Add(new ExternalLogin { Provider = account.Provider, ProviderDisplayName = clientData.DisplayName, ProviderUserId = account.ProviderUserId, }); } ViewBag.ShowRemoveButton = externalLogins.Count > 1 || OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name)); return(PartialView("_RemoveExternalLoginsPartial", externalLogins)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // 将新用户插入到数据库 UserProfile user = userProfileRepository.Entities.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // 检查用户是否已存在 if (user == null) { // 将名称插入到配置文件表 userProfileRepository.Entities.Add(new UserProfile { UserName = model.UserName }); unitOfWork.Commit(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "用户名已存在。请输入其他用户名。"); } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ExternalAccounts ExternalAccounts() { ICollection <OAuthAccount> accounts = OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name); List <ExternalLogin> externalLogins = new List <ExternalLogin>(); foreach (OAuthAccount account in accounts) { AuthenticationClientData clientData = OAuthWebSecurity.GetOAuthClientData(account.Provider); externalLogins.Add(new ExternalLogin { Provider = account.Provider, ProviderDisplayName = clientData.DisplayName, ProviderUserId = account.ProviderUserId, }); } ExternalAccounts externalLoginList = new ExternalAccounts(); externalLoginList.ExternalLogins = externalLogins; externalLoginList.ShowRemoveButton = externalLogins.Count > 1 || OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name)); return(externalLoginList); }
//[ValidateAntiForgeryToken] public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider; string providerUserId; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Insert a new user into the database using (var db = new EStudyBaseContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Check if user already exists if (user == null) { // Insert name into the profile table db.UserProfiles.Add(new UserProfile { UserName = model.UserName, Email = "*****@*****.**" }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } ModelState.AddModelError("UserName", "Bu kullanıcı adı ile daha önceden kayıt oluşturulmuş. Lütfen farklı bir kullanıcı adı giriniz."); } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { var user = this._userRepository.GetUserByUserName(model.UserName); // if does not have any user with this username if (user == null) { _userRepository.CreateUser( model.UserName, model.UserName, "".GetDefaultPassword(), "".GetDefaultEmail(), (int)Role.RegisterUser, "".GetDefaultCreatedByUser()); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } this.ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public async Task <ActionResult> OAuthLoginCallback(string returnUrl, CancellationToken cancellationToken) { OAuth.OAuthGoogleClient.RewriteRequest(); var result = OAuthWebSecurity.VerifyAuthentication(Url.Action("oauthlogincallback", new RouteValueDictionary { { "returnurl", returnUrl } })); if (!result.IsSuccessful) { return(RedirectToAction("OAuthLoginFailure")); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { string userName = OAuthWebSecurity.GetUserName(result.Provider, result.ProviderUserId); await UpdateUserLoginDataAsync(userName, cancellationToken); return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account. OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return(RedirectToLocal(returnUrl)); } else { // User is new, ask for their desired membership name. string extraData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; var model = CreateSignupInfo(result.ExtraData); model.ExtraData = extraData; return(View("OAuthLoginConfirmation", model)); } }
public ActionResult ExternalLoginCallback(string returnUrl) { AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return(RedirectToLocal(returnUrl)); } else { // User is new, ask for their desired membership name string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData })); } }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { var userId = WebSecurity.GetUserId(model.UserName); if (userId == -1) { string str = ConfigurationManager.ConnectionStrings["mongodb"].ConnectionString; DefaultUsersService service = new DefaultUsersService(str); SampleUserProfile profile = new SampleUserProfile(); profile.UserName = model.UserName; service.Save(profile); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { var user = _userService.Users.FirstOrDefault(x => x.Name.ToLower() == model.UserName.ToLower()); if (user == null) { _userService.AddUser(new User { Name = model.UserName }); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginCallback(string returnUrl) { AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); if (result.Provider == "facebook" || result.Provider == "google") { using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == User.Identity.Name); if (user != null) { var oauthItem = db.OAuthMemberships.FirstOrDefault(x => x.Provider == result.Provider && x.ProviderUserId == result.ProviderUserId && x.UserId == user.UserId); if (oauthItem != null) { oauthItem.Email = result.UserName; db.SaveChanges(); } } } } return(RedirectToLocal(returnUrl)); } else { string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; var model = new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData }; switch (result.Provider) { case "facebook": case "google": { model.Email = result.UserName; model.UserName = ""; break; } case "twitter": { model.Email = ""; model.UserName = result.UserName; break; } default: break; } return(View("ExternalLoginConfirmation", model)); } }
public AuthenticationClientData GetOAuthClientData(string providerName) { return(OAuthWebSecurity.GetOAuthClientData(providerName)); }
public ActionResult ExternalLoginConfirmation(RegisterModelDTO model, string profileImageUrl, string returnUrl) { if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out string provider, out string providerUserId)) { return(RedirectToAction("Manage")); } model.ExternalProvider = provider; model.ExternalProviderUserId = providerUserId; //Download the image for profile pic HttpWebRequest request = (HttpWebRequest)WebRequest.Create(profileImageUrl); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Check that the remote file was found. The ContentType // check is performed since a request for a non-existent // image file might be redirected to a 404-page, which would // yield the StatusCode "OK", even though the image was not // found. if ((response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Moved || response.StatusCode == HttpStatusCode.Redirect) && response.ContentType.StartsWith("image", StringComparison.OrdinalIgnoreCase)) { Stream inputStream = null; try { inputStream = response.GetResponseStream(); //get the bytes from the content stream of the file byte[] thePictureAsBytes = new byte[response.ContentLength]; using (BinaryReader theReader = new BinaryReader(inputStream)) { inputStream = null; thePictureAsBytes = theReader.ReadBytes(int.Parse(response.ContentLength.ToString())); } model.ImageData = thePictureAsBytes; model.ImageType = response.ContentType; } finally { if (inputStream != null) { inputStream.Dispose(); } } } if (ModelState.IsValid) { // Attempt to register the user try { using (HttpClientWrapper httpClient = new HttpClientWrapper(Session)) { var responseMessage = httpClient.PostAsJsonAsync("/api/AccountAPI", model).Result; //If registration worked, then need to send email confirmation if (responseMessage.IsSuccessStatusCode) { var confirmationToken = JsonConvert.DeserializeObject <string>(responseMessage.Content.ReadAsStringAsync().Result); var confURL = WebUI.Common.Common.GetDomainFromRequest(HttpContext.Request) + "/Account/RegisterConfirmation/" + confirmationToken.ToString(); MessagingService.RegistrationConfirmation(model.Email, model.FirstName, confURL); return(RedirectToAction("RegisterStepTwo")); } else { var error = JsonConvert.DeserializeObject <System.Web.Http.HttpError>(responseMessage.Content.ReadAsStringAsync().Result); ModelState.AddModelError(responseMessage.ReasonPhrase, error.Message); } } } catch (MembershipCreateUserException e) { ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; ViewBag.StatesList = WebUI.Common.Common.GetStates(); return(View(model)); }
public ActionResult ExternalLoginCallback(string returnUrl) { AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } string first_name = ""; string last_name = ""; string email = ""; if (result.ExtraData.Keys.Contains("accesstoken")) { var client = new FacebookClient(result.ExtraData["accesstoken"]); dynamic me = client.Get("me"); Session["facebooktoken"] = result.ExtraData["accesstoken"]; first_name = me.first_name; last_name = me.last_name; email = me.email; } else { String[] full_name = result.ExtraData["name"].ToString().Split(' '); if (full_name[0] != null) { first_name = full_name[0]; } if (full_name[1] != null) { last_name = full_name[1]; } } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { SetAuthCookie(email); var user = UserService.GetUserbyEmail(email); if (user == null) { SetMessage("Error.", BootstrapAlertTypes.Danger); return(Redirect("/Account/login")); } var claims = new List <Claim>(); claims.Add(new Claim(ClaimTypes.Name, user.UserName)); claims.Add(new Claim(ClaimTypes.Email, user.Email)); var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie); var ctx = Request.GetOwinContext(); var authenticationManager = ctx.Authentication; authenticationManager.SignIn(id); SetEncryptedCookie(Configuration.UserCookie, new Dictionary <String, String> { { "Email", user.Email }, { "Code", user.Code } }); if (RoleService.IsUserInRole(user.Email, "Admin")) { return(Redirect("/Magazines")); } if (RoleService.IsUserInRole(user.Email, "Influencer")) { return(Redirect("/Home/Index")); } if (!String.IsNullOrEmpty(returnUrl)) { return(Redirect(returnUrl)); } return(Redirect("/Influencer")); //SetEncryptedCookie(Configuration.UserCookie, first_name, Configuration.CookieLifeTime); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, email); SetAuthCookie(email); //SetEncryptedCookie(Configuration.UserCookie, first_name, Configuration.CookieLifeTime); //UserService.LastSeenUpdate(email); //if (Request.Cookies["isFromCheckOut"] != null) //{ // SetCookie("isFromCheckOut", false, false); // RemoveCookie("isFromCheckOut"); // return Redirect("/store/checkout"); //} return(Redirect("/")); } else { // User is new, ask for their desired membership name string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; //return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData }); return(View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData, Name = first_name })); } }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Insert a new user into the database using (EFDataBase db = new EFDataBase()) { User user = db.Users().FirstOrDefault(u => u.Email.ToLower() == model.UserName.ToLower()); // Check if user already exists if (user == null) { // Insert name into the profile table //db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); //db.SaveChanges(); bool facebookVerified; var client = new Facebook.FacebookClient(Session["facebooktoken"].ToString()); dynamic response = client.Get("me", new { fields = "id,verified" }); if (response.ContainsKey("verified")) { facebookVerified = response["verified"]; } else { facebookVerified = false; } var code = Guid.NewGuid().ToString(); var newUser = new User(); newUser.ActivationDate = DateTime.Now; newUser.Code = code; newUser.Email = model.UserName; newUser.UserName = model.Name; newUser.CreateDate = DateTime.Now.ToString(); newUser.FbId = response["id"]; db.UsersList.Add(newUser); db.SaveChanges(); RoleService.AddUserToRole(model.UserName, "Influencer"); user = UserService.GetUserbyEmail(model.UserName); if (user == null) { SetMessage("Error.", BootstrapAlertTypes.Danger); return(Redirect("/Account/login")); } OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); var claims = new List <Claim>(); claims.Add(new Claim(ClaimTypes.Name, model.UserName)); claims.Add(new Claim(ClaimTypes.Email, model.UserName)); var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie); var ctx = Request.GetOwinContext(); var authenticationManager = ctx.Authentication; authenticationManager.SignIn(id); SetAuthCookie(model.UserName); SetEncryptedCookie(Configuration.UserCookie, new Dictionary <String, String> { { "Email", user.Email }, { "Code", user.Code } }); if (RoleService.IsUserInRole(model.UserName, "Admin")) { return(Redirect("/Magazines")); } if (RoleService.IsUserInRole(model.UserName, "Influencer")) { return(Redirect("/Influencer")); } if (!String.IsNullOrEmpty(returnUrl)) { return(Redirect(returnUrl)); } } else { ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Insert a new user into the database using (UsersContext db = new UsersContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Check if user already exists if (user == null) { UserProfile newUser = db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); // bool facebookVerified; var client = new Facebook.FacebookClient(Session["facebooktoken"].ToString()); dynamic response = client.Get("me", new { fields = "verified" }); if (response.ContainsKey("verified")) { facebookVerified = response["verified"]; } else { facebookVerified = false; } db.ExternalUsers.Add(new ExternalUserInformation { UserId = newUser.UserId, FullName = model.FullName, Link = model.Link, Verified = facebookVerified }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return(RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(this.RedirectToAction("Index", "Home")); } if (ModelState.IsValid) { UserProfile userProfile = this.userManager.GetUserProfileFromProvider(provider, providerUserId); if (userProfile == null) { ClientUserData clientUserData = (ClientUserData)TempData["ClientUserData"]; Random random = new Random(); int userId = random.Next(int.MaxValue); userProfile = new UserProfile { RowKey = userId.ToString(), UserName = string.IsNullOrEmpty(clientUserData.UserName) ? clientUserData.Emails.Account : clientUserData.UserName, AccountEmail = clientUserData.Emails.Account, FirstName = model.FirstName, LastName = model.LastName, City = model.City, Country = model.Country, State = model.State, PreferredEmail = model.PreferredEmail, Gender = clientUserData.Gender, Link = Convert.ToString(clientUserData.Link), IsSuperAdmin = false, TimeZone = model.TimeZone, CreatedTime = DateTime.Now.ToUniversalTime().ToString(), Address1 = model.Address1, Address2 = model.Address2, Phone = model.Phone, PhoneCountryCode = model.PhoneCountryCode, ZipCode = model.ZipCode }; var regions = this.regionSource.GetAvailableRegions(); List <AccessDetails> defaultAccess = new List <AccessDetails>(); foreach (var region in regions) { var accessDetail = new AccessDetails { AccessLevel = AccessLevels.PortalUser, Authority = (Authorities)Convert.ToInt32(region.RegionInformation.Id) }; defaultAccess.Add(accessDetail); } this.userManager.SaveUserDetails( new UserDetails { UserInfo = userProfile, AccessInfo = defaultAccess, }); this.RegisterAuditor.TransactionId = this.RegisterLogger.TransactionId; this.RegisterAuditor.Audit(AuditId.RegisterUser, AuditStatus.Success, default(int), userProfile.UserName + " Registered Successfully"); this.RegisterLogger.Log(TraceEventType.Information, LoggingMessageId.PortalUserRegistration, userProfile.UserName + " registered to the portal"); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); this.RegisterLogger.Log(TraceEventType.Information, LoggingMessageId.PortalUserLoggedIn, userProfile.UserName + " has logged in to the portal"); // By Default IsSuperAdmin is false this.CreateAuthenticationTicket(model.UserName, clientUserData.AccessToken, DateTime.Now, false, false); return(this.RedirectToLocal(returnUrl)); } else { ModelState.AddModelError("UserName", "User already exists. Please enter a different user name."); } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; ViewBag.Country = new SelectList(Utility.GetCounties()); ViewBag.TimeZone = new SelectList(Utility.GetTimeZones()); ViewBag.PhoneCountryCode = new SelectList(Utility.GetCountryPhoneCodes()); return(this.View("Register", model)); }
public ActionResult ExternalLoginCallback(string returnUrl) { AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(returnUrl); if (!result.IsSuccessful) { return(this.RedirectToAction("ExternalLoginFailure")); } if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { UserProfile userProfile = this.userManager.GetUserProfileFromProvider(result.Provider, result.ProviderUserId); IEnumerable <AccessDetails> accessDetails = this.userManager.GetUserAccessDetails(userProfile.RowKey); var isRegionAdmin = accessDetails.Any(x => x.AccessLevel == AccessLevels.Admin); this.CreateAuthenticationTicket(result.ExtraData["name"].ToString(), result.ExtraData["accesstoken"].ToString(), DateTime.Now, userProfile.IsSuperAdmin, isRegionAdmin); this.RegisterLogger.Log(TraceEventType.Information, LoggingMessageId.PortalUserLoggedIn, userProfile.UserName + " has logged in to the portal"); return(this.RedirectToLocal(returnUrl)); //// return this.Redirect(redirectUrl); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); UserProfile userProfile = this.userManager.GetUserProfileFromProvider(result.Provider, result.ProviderUserId); IEnumerable <AccessDetails> accessDetails = this.userManager.GetUserAccessDetails(userProfile.RowKey); var isRegionAdmin = accessDetails.Any(x => x.AccessLevel == AccessLevels.Admin); this.CreateAuthenticationTicket(User.Identity.Name, result.ExtraData["accesstoken"].ToString(), DateTime.Now, userProfile.IsSuperAdmin, isRegionAdmin); return(this.RedirectToLocal(returnUrl)); } else { // User is new, ask for them to register string accessToken = result.ExtraData["accesstoken"].ToString(); var userData = this.userManager.GetClientUserDataByAccessToken(accessToken); userData.AccessToken = accessToken; this.TempData["ClientUserData"] = userData; RegisterExternalLoginModel registerModel = new RegisterExternalLoginModel { FirstName = userData.FirstName, LastName = userData.LastName, UserName = string.IsNullOrEmpty(userData.UserName) ? userData.Emails.Account : userData.UserName, AccountEmail = userData.Emails.Account, PreferredEmail = userData.Emails.Preferred, City = userData.Business != null ? userData.Business.City : string.Empty, ExternalLoginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId), }; ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; ViewBag.Country = new SelectList(Utility.GetCounties()); ViewBag.TimeZone = new SelectList(Utility.GetTimeZones(), "(UTC-08:00) Pacific Time (US & Canada)"); ViewBag.PhoneCountryCode = new SelectList(Utility.GetCountryPhoneCodes(), "United States(+1)"); return(this.View("Register", registerModel)); } }
public ActionResult ExternalLoginCallback(string returnUrl) { AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } // store the user id in the session Session["UserFacebookId"] = result.ProviderUserId; webpages_OAuthMembership userrecord = db.webpages_OAuthMembership.FirstOrDefault(m => m.Provider == "facebook" && m.ProviderUserId == result.ProviderUserId); if (userrecord != null) { Session["UserID"] = userrecord.UserId; } // remember the user's facebook friends var fb = new FacebookClient(result.ExtraData["accesstoken"]); dynamic myInfo = fb.Get("/me/friends"); foreach (dynamic friend in myInfo.data) { // post a test message the friend's wall //try //{ // fb.Post(string.Format("{0}/feed",friend.id), new { message = "My first wall post" }); //} //catch (Exception e) //{ // string text = e.StackTrace; //} // does the friend already exist? String strUserId = result.ProviderUserId; Int64 intUserId = Int64.Parse(strUserId); Int64 intfriendId = Int64.Parse(friend.id); UserFriend userFriend = db.UserFriends.FirstOrDefault(u => u.UserFriend_UserFacebookId == intUserId && u.UserFriend_FriendFacebookId == intfriendId); if (userFriend == null) { UserFriend newUserFriend = new UserFriend(); newUserFriend.UserFriend_UserFacebookId = intUserId; newUserFriend.UserFriend_FriendFacebookId = intfriendId; newUserFriend.UserFriend_Name = friend.name; // Save the record db.UserFriends.Add(newUserFriend); db.SaveChanges(); } } // post a test message on my wall //try //{ // fb.Post("me/feed", new { message = "My second wall post" }); //} //catch (Exception e) //{ // string text = e.StackTrace; //} // post a test var parameters = new Dictionary <string, object> { { "event", "http://amovada.azurewebsites.net/Event/Details/1963" }, { "tags", "585173979" } }; var response = fb.Post("me/amovada:added_you_to", parameters); if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); return(RedirectToLocal(returnUrl)); } else { // User is new, ask for their desired membership name string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData })); } }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return(RedirectToAction("Manage")); } if (ModelState.IsValid) { // Insert a new user into the database using (MainDBEntities db = new MainDBEntities()) { user userEx = db.users.FirstOrDefault(u => u.email == model.UserName); // Check if user already exists if (userEx != null) { userEx.userName = model.twitterName; userEx.firstName = model.firstName; userEx.lastName = model.lastName; db.Entry(userEx).State = EntityState.Modified; db.SaveChanges(); FormsAuthentication.SetAuthCookie(userEx.email, false); return(RedirectToAction("List")); } if (userEx == null) { ///////////////////////////////////////// try { using (var df = new MainDBEntities()) { var sysUser = df.users.Create(); sysUser.userId = Guid.NewGuid(); sysUser.email = model.UserName; sysUser.password = "******"; sysUser.userName = model.twitterName; sysUser.firstName = model.firstName; sysUser.lastName = model.lastName; df.users.Add(sysUser); df.SaveChanges(); //return RedirectToAction("List"); FormsAuthentication.SetAuthCookie(model.UserName, false); return(RedirectToAction("List")); } } catch { ModelState.AddModelError("UserName", "User name or twitter name already exists. Please enter a different user name or twitter name."); } ///////////////////////////////// // Insert name into the profile table // db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); // db.SaveChanges(); //OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); //OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); //return RedirectToLocal(returnUrl); } else { ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View(model)); }
public ActionResult ExternalLoginCallback(string returnUrl) { //Get result from OpenID provider AuthenticationResult authenticationResult = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!authenticationResult.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } //Login with authentication result if (OAuthWebSecurity.Login(authenticationResult.Provider, authenticationResult.ProviderUserId, createPersistentCookie: true)) { return(RedirectTo(returnUrl)); } var userName = OAuthWebSecurity.GetUserName(authenticationResult.Provider, authenticationResult.ProviderUserId); var loginData = OAuthWebSecurity.SerializeProviderUserId(authenticationResult.Provider, authenticationResult.ProviderUserId); var displayName = OAuthWebSecurity.GetOAuthClientData(authenticationResult.Provider).DisplayName; // If the current user is logged in add the new account if (User.Identity.IsAuthenticated) { OAuthWebSecurity.CreateOrUpdateAccount(authenticationResult.Provider, authenticationResult.ProviderUserId, User.Identity.Name); return(RedirectTo(returnUrl)); } var membershipUserIdentifier = Guid.NewGuid().ToString(); try { // Insert a new user into the database using (var db = dataContextFactory.Create()) { // Insert name into the profile table db.Users.Add(new User { MembershipUserIdentifier = membershipUserIdentifier, Email = authenticationResult.UserName }); db.SaveChanges(); } } catch (DbUpdateException e) { var innerException1 = e.InnerException as System.Data.Entity.Core.UpdateException; if (innerException1 == null) { throw; } var innerException2 = innerException1.InnerException as SqlException; if (innerException2 == null) { throw; } var innerExceptionMessage = innerException2.Message ?? ""; if (innerExceptionMessage.Contains("IX_Email") && innerExceptionMessage.Contains("duplicate")) { Flash.Error("The email address used to login is already in use on this site using a different login method. " + "Please login with the original login method used for that email. " + "Then you may associate other login methods with your account. "); return(RedirectToAction("Login")); } else { throw; } } OAuthWebSecurity.CreateOrUpdateAccount(authenticationResult.Provider, authenticationResult.ProviderUserId, membershipUserIdentifier); OAuthWebSecurity.Login(authenticationResult.Provider, authenticationResult.ProviderUserId, createPersistentCookie: true); return(RedirectTo(returnUrl)); }