public ActionResult EditarUsuario(RegisterFrontViewModel viewModel) { ModelState["Password"].Errors.Clear(); var usuarioActual = UsuarioClienteHelper.Actual(db); //if (!usuarioActual.EsAdministrador && !usuarioActual.EsGerenteSucursal) //{ // throw new Exception("SEGURIDAD: El usuario con id: " + usuarioActual.Id + " intentó entrar a la sección de creación de usuarios."); //} var appUser = UserManager.FindById(viewModel.IdUsuarioApplicacion); if (ModelState.IsValid) { if (ModificarApplicationUser(viewModel)) { var usuario = new Repositorio <Usuario>(db).Traer(viewModel.Id); new Repositorio <Usuario>(db).Modificar(usuario); return(RedirectToAction("MiPerfil", "Frontend", new { Message = "UpdateUserSuccess" })); } } return(View("Usuario", viewModel)); }
public ApplicationUser(RegisterFrontViewModel model) { UserName = model.Email; Email = model.Email; Name = model.Name; Lastname = model.Lastname; TokenFechaVencimiento = DateTime.Now.AddDays(7); }
public ActionResult Registrar(string nombre, string idSocial) { var user = new RegisterFrontViewModel(); user.Name = nombre; user.IdSocial = idSocial; if (string.IsNullOrWhiteSpace(idSocial)) { user.Password = "******"; user.ConfirmPassword = "******"; } return(View("Registrar", user)); }
public ActionResult DetalleUsuario(Guid id) { var usuario = new Repositorio <Usuario>(db).Traer(id); var viewModel = new RegisterFrontViewModel(); List <string> seleccionados = UserManager.GetRoles(usuario.UsuarioApplicacion.Id).ToList(); viewModel.UserRolesSelected = viewModel.Perfiles .Where(x => seleccionados.Contains(x.Text)) .Select(x => x.Value).ToList(); viewModel.RegenerarFrontend(db); ViewBag.Title = "Detalle Usuario"; return(View(viewModel)); }
public bool RegisterUser(RegisterFrontViewModel model) { try { var db = new ApplicationDbContext(); var user = new ApplicationUser(model); var usuario = new Usuario(); usuario.UsuarioApplicacion = user; usuario.Nombre = model.Name; usuario.Apellido = model.Lastname; usuario.Email = model.Email; usuario.FechaNacimiento = DateTime.Now; usuario.Sexo = new Repositorio <Sexo>(db).TraerTodos().First(); new Repositorio <Usuario>(db).Crear(usuario); model.Password = model.ConfirmPassword = usuario.UsuarioApplicacion.Id.Substring(0, 4) + GenerarRandomPass(); UserManager.AddPassword(usuario.UsuarioApplicacion.Id, model.Password); if (model.UserRolesSelected != null && model.UserRolesSelected.Count > 0) { model.UserRolesSelected.ToList().ForEach(rol => UserManager.AddToRole(user.Id, model.Perfiles.First(x => x.Value == rol).Text)); } try { //Enviar Mail Usuario Generado dynamic em = new Email("UsuarioGenerado"); em.To = model.Email; em.Nombre = user.Name; em.Link = WebConfigurationManager.AppSettings["Core"]; em.Password = model.Password; em.Send(); //END Mail } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } return(true); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return(false); } }
public ActionResult AltaUsuario() { var usuarioActual = UsuarioClienteHelper.Actual(db); //if (!usuarioActual.EsAdministrador) //{ // throw new Exception("SEGURIDAD: El usuario con id: " + usuarioActual.Id + " intentó entrar a la sección de creación de usuarios."); //} ViewBag.Name = new SelectList(ApplicationDbContext.Create().Roles.ToList(), "Name", "Name"); RegisterFrontViewModel viewModel = new RegisterFrontViewModel() { UserRolesSelected = new List <string>(), ResetPassword = true }; return(View("Usuario", viewModel)); }
public async Task <ActionResult> AltaUsuario(RegisterFrontViewModel viewModel) { var usuarioActual = UsuarioClienteHelper.Actual(db); //if (!usuarioActual.EsAdministrador) //{ // throw new Exception("SEGURIDAD: El usuario con id: " + usuarioActual.Id + " intentó entrar a la sección de creación de usuarios."); //} if (ModelState.IsValid) { if (this.RegisterUser(viewModel)) { return(RedirectToAction("MiPerfil", "Frontend")); } } viewModel.ResetPassword = true; return(View("Usuario", viewModel)); }
public bool ModificarApplicationUser(RegisterFrontViewModel usuarioModificado) { try { var appUser = UserManager.FindById(usuarioModificado.IdUsuarioApplicacion); if (usuarioModificado.ResetPassword) { UserManager.RemovePassword(appUser.Id); UserManager.AddPassword(appUser.Id, usuarioModificado.Password); } appUser.Email = usuarioModificado.Email; appUser.Name = usuarioModificado.Name; appUser.Lastname = usuarioModificado.Lastname; if (usuarioModificado.UserRolesSelected != null) { UserManager.RemoveFromRoles(appUser.Id, UserManager.GetRoles(appUser.Id).ToArray()); UserManager.Update(appUser); List <string> rolesAAgregar = new List <string>(); usuarioModificado.UserRolesSelected.ToList() .ForEach(roleId => rolesAAgregar.Add(usuarioModificado.Perfiles.First(perf => perf.Value == roleId).Text) ); UserManager.AddToRoles(appUser.Id, rolesAAgregar.ToArray()); } UserManager.Update(appUser); return(true); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return(false); } }
public ActionResult EditarUsuario(Guid id) { var usuarioActual = UsuarioClienteHelper.Actual(db); //if (!usuarioActual.EsAdministrador && !usuarioActual.EsGerenteSucursal) //{ // throw new Exception("SEGURIDAD: El usuario con id: " + usuarioActual.Id + " intentó entrar a la sección de creación de usuarios."); //} var usuario = new Repositorio <Usuario>(db).Traer(id); var viewModel = new RegisterFrontViewModel(usuario); List <string> seleccionados = UserManager.GetRoles(usuario.UsuarioApplicacion.Id).ToList(); viewModel.UserRolesSelected = viewModel.Perfiles .Where(x => seleccionados.Contains(x.Text)) .Select(x => x.Value).ToList(); viewModel.RegenerarFrontend(db); ViewBag.Title = "Editar Usuario"; return(View("Usuario", viewModel)); }
public ActionResult Registrar(RegisterFrontViewModel model) { string ContraseñaError = "La contraseña debe tener al menos: <br>- 6 caracteres</br>- 1 minúscula</br>- 1 mayúscula</br>- 1 símbolo (ej: $, % o !)</br>- 1 número"; try { if (string.IsNullOrWhiteSpace(model.Email)) { ViewBag.Error = "No ha completado el mail"; return(View("Registrar", model)); } if (string.IsNullOrWhiteSpace(model.Name)) { ViewBag.Error = "No ha completado el nombre"; return(View("Registrar", model)); } if (string.IsNullOrWhiteSpace(model.IdSocial)) { if (string.IsNullOrWhiteSpace(model.Password) || string.IsNullOrWhiteSpace(model.ConfirmPassword)) { ViewBag.Error = "No ha completado la contraseña y su confirmación"; return(View("Registrar", model)); } if (model.Password != model.ConfirmPassword) { ViewBag.Error = "La contraseña y su confirmación no son iguales"; return(View("Registrar", model)); } if (model.Password.Length < 6) { ViewBag.Error = ContraseñaError; return(View("Registrar", model)); } if (!model.Password.Any(c => char.IsLower(c))) { ViewBag.Error = ContraseñaError; return(View("Registrar", model)); } if (!model.Password.Any(c => char.IsUpper(c))) { ViewBag.Error = ContraseñaError; return(View("Registrar", model)); } if (!model.Password.Any(c => char.IsNumber(c))) { ViewBag.Error = ContraseñaError; return(View("Registrar", model)); } //Regex RgxUrl = new Regex("[^a-z0-9]"); if (model.Password.All(Char.IsLetterOrDigit)) { ViewBag.Error = ContraseñaError; return(View("Registrar", model)); } } else { model.Password = "******"; model.ConfirmPassword = "******"; } if (new Repositorio <Usuario>(db).TraerTodos().Any(u => u.UsuarioApplicacion.UserName == model.Email)) { ViewBag.Error = "El email ingresado ya se encuentra en uso"; return(View("Registrar", model)); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Name = model.Name, Lastname = "", TokenFechaVencimiento = DateTime.Now.AddDays(7), }; var usuario = new Clubber(); usuario.UsuarioApplicacion = user; usuario.Nombre = model.Name; usuario.Apellido = ""; usuario.Email = model.Email; usuario.FechaNacimiento = DateTime.Now; usuario.Sexo = new Repositorio <Sexo>(db).TraerTodos().First(); if (!string.IsNullOrWhiteSpace(model.IdSocial)) { var userSocial = new UsuarioSocial { Apellido = "", Email = model.Email, Nombre = model.Name, IdSocial = model.IdSocial, RedSocial = RedSocial.Instagram, }; usuario.CredencialesSociales = new List <Models.Dominio.UsuarioSocial>(); usuario.CredencialesSociales.Add(userSocial); } new Repositorio <Usuario>(db).Crear(usuario); UserManager.AddPassword(usuario.UsuarioApplicacion.Id, model.Password); UserManager.AddToRole(user.Id, RoleConst.Clubber); SignInManager.SignIn(user, true, true); return(RedirectToAction("Index", "Frontend")); } catch (Exception ex) { ViewBag.Error = "Ha ocurrido un error!"; return(View("Registrar", model)); } }
public ActionResult ReturnFrom(RedSocial tipo, string code) { var goTo = CacheHelper.GetKey(CacheHelper.GetNotLoggedUserKey()); try { using (WebClient client = new WebClient()) { ISocialUser user; byte[] response; switch (tipo) { case RedSocial.Google: throw new Exception("Loggeo incorrecto con Google"); break; case RedSocial.Instagram: response = client.UploadValues("https://api.instagram.com/oauth/access_token", new NameValueCollection() { { "client_id", SocialIds.InstagramClientId }, { "client_secret", SocialIds.InstagramClientSecret }, { "grant_type", SocialIds.InstagramGrantType }, { "redirect_uri", (WebConfigurationManager.AppSettings["Core"] + WebConfigurationManager.AppSettings["urlInstagramRedirect"]) }, { "code", code }, }); InstagramResponseValidationCode responseI = JsonConvert.DeserializeObject <InstagramResponseValidationCode>(System.Text.Encoding.UTF8.GetString(response)); user = responseI.user; ((InstagramUser)user).Token = responseI.access_token; break; case RedSocial.FaceBook: response = client.UploadValues("https://graph.facebook.com/v2.9/oauth/access_token", new NameValueCollection() { { "client_id", SocialIds.FacebookAppId }, { "redirect_uri", WebConfigurationManager.AppSettings["Core"] + WebConfigurationManager.AppSettings["urlFacebookRedirect"] }, { "client_secret", SocialIds.FacebookSecret }, { "code", code } }); FacebookResponseValidationCode obj = JsonConvert.DeserializeObject <FacebookResponseValidationCode>(System.Text.Encoding.UTF8.GetString(response)); //No se por que no anda de esta forma //byte[] userResponse = client.UploadValues("https://graph.facebook.com/v2.9/me", new NameValueCollection() //{ // { "fields", "email,id,first_name,last_name,name,picture.type(large)" }, // { "access_token", obj.access_token } //}); //FacebookUser fbUser = JsonConvert.DeserializeObject<FacebookUser>(System.Text.Encoding.UTF8.GetString(response)); //user = fbUser; using (HttpClient cliente = new HttpClient()) { var mess = cliente.GetStringAsync("https://graph.facebook.com/me?fields=email,name,picture.type(large),id&access_token=" + obj.access_token); user = JsonConvert.DeserializeObject <FacebookUser>(mess.Result); ((FacebookUser)user).Token = obj.access_token; } break; case RedSocial.Spotify: SpotifyResponseValidationCode responseS; using (HttpClient cliente = new HttpClient()) { Dictionary <string, string> postData = new Dictionary <string, string>(); postData.Add("grant_type", "authorization_code"); postData.Add("code", code); postData.Add("redirect_uri", WebConfigurationManager.AppSettings["Core"] + WebConfigurationManager.AppSettings["urlSpotifyRedirect"]); postData.Add("client_id", SocialIds.SpotifyClientId); postData.Add("client_secret", SocialIds.SpotifySecret); var content = new FormUrlEncodedContent(postData); var httpResponse = cliente.PostAsync("https://accounts.spotify.com/api/token", content).Result.Content.ReadAsStringAsync().Result; responseS = JsonConvert.DeserializeObject <SpotifyResponseValidationCode>(httpResponse); } using (HttpClient cliente = new HttpClient()) { cliente.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", responseS.access_token); var mess = cliente.GetAsync("https://api.spotify.com/v1/me").Result.Content.ReadAsStringAsync(); user = JsonConvert.DeserializeObject <SpotifyUser>(mess.Result); ((SpotifyUser)user).accessToken = responseS.access_token; } break; case RedSocial.SoundCloud: throw new Exception("Loggeo incorrecto con SoundCloud"); break; default: throw new Exception("Loggeo incorrecto con Random"); break; } if (ExisteUsuarioSocial(user.GetId())) { //existe el user, loguearlo var id = user.GetId(); var userSocial = new Repositorio <UsuarioSocial>(new ApplicationDbContext()).TraerTodos().Single(u => u.IdSocial == id); var usuarios = new Repositorio <Clubber>(db).TraerTodos() .Where(r => r.CredencialesSociales.Any(c => c.IdSocial == userSocial.IdSocial)); SignInManager.SignIn(usuarios.First().UsuarioApplicacion, true, true); if (string.IsNullOrEmpty(goTo)) { return(RedirectToAction("Index", "Frontend")); } else { return(RedirectToLocal(goTo.ToString())); } } else { //no existe el user -> crearlo var nuevo = new RegisterFrontViewModel(); nuevo.Name = user.GetName(); nuevo.IdSocial = user.GetId(); nuevo.Email = string.IsNullOrWhiteSpace(user.GetEmail()) ? user.GetName().Replace(" ", "") + "@danzfloor.com.ar" : user.GetEmail(); var clubberRepo = new Repositorio <Clubber>(db); if (clubberRepo.TraerTodos().Any(u => u.UsuarioApplicacion.UserName == nuevo.Email)) { var clubber = clubberRepo.TraerTodos().First(u => u.UsuarioApplicacion.UserName == nuevo.Email); var userSocial = new UsuarioSocial { AccessToken = user.GetAccessToken(), Apellido = "", Email = user.GetEmail(), Nombre = user.GetName(), IdSocial = user.GetId(), RedSocial = user is FacebookUser ? RedSocial.FaceBook : user is SpotifyUser ? RedSocial.Spotify : RedSocial.Instagram, }; clubber.CredencialesSociales = new List <Models.Dominio.UsuarioSocial>(); clubber.CredencialesSociales.Add(userSocial); clubberRepo.GuardarCambios(); SignInManager.SignIn(clubber.UsuarioApplicacion, true, true); return(RedirectToAction("Index", "Frontend")); } var appUser = new ApplicationUser { UserName = nuevo.Email, Email = nuevo.Email, Name = nuevo.Name, Lastname = "", TokenFechaVencimiento = DateTime.Now.AddDays(7), }; var usuario = new Clubber(); usuario.UsuarioApplicacion = appUser; usuario.Nombre = nuevo.Name; usuario.Apellido = ""; usuario.Email = nuevo.Email; usuario.FechaNacimiento = DateTime.Now; usuario.Sexo = new Repositorio <Sexo>(db).TraerTodos().First(); if (!string.IsNullOrWhiteSpace(user.GetId())) { var userSocial = new UsuarioSocial { Apellido = "", Email = nuevo.Email, Nombre = nuevo.Name, IdSocial = nuevo.IdSocial, RedSocial = RedSocial.Instagram, }; usuario.CredencialesSociales = new List <Models.Dominio.UsuarioSocial>(); usuario.CredencialesSociales.Add(userSocial); } new Repositorio <Usuario>(db).Crear(usuario); UserManager.AddPassword(usuario.UsuarioApplicacion.Id, "qweQWE123!#"); UserManager.AddToRole(appUser.Id, RoleConst.Clubber); SignInManager.SignIn(appUser, true, true); return(RedirectToAction("Index", "Frontend")); } } } catch (Exception ex) { return(null); } }