public string CreateUser(NewUserViewModel model) { var user = new ApplicationUser { Email = model.Email, UserName = model.UserName, USER_PERSONA_ID = model.USER_PERSONA_ID }; var result = manager.Create(user); if (result.Succeeded) { manager.AddToRole(user.Id, model.USER_PERSONA_ROL); var usuarioNuevo = context.Users.Single(u => u.Id == user.Id); usuarioNuevo.EmailConfirmed = true; context.SaveChanges(); return user.Id; } return null; }
public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) { if (User.Identity.IsAuthenticated) { return RedirectToAction("Index", "Manage"); } if (ModelState.IsValid) { // Obtener datos del usuario del proveedor de inicio de sesión externo var info = await AuthenticationManager.GetExternalLoginInfoAsync(); if (info == null) { return View("ExternalLoginFailure"); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user); if (result.Succeeded) { result = await UserManager.AddLoginAsync(user.Id, info.Login); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); return RedirectToLocal(returnUrl); } } AddErrors(result); } ViewBag.ReturnUrl = returnUrl; return View(model); }
public async Task<IHttpActionResult> BatchCreateUsers(List<BatchCreateUsersVM> users) { var _db = new ColegioTerciario.Models.ColegioTerciarioContext(); var respuesta = new List<BatchCreateUsersResponseVM>(); foreach (BatchCreateUsersVM user in users) { try { // Ignora el proceso si el Usuario ya existe if (UserManager.FindByName(user.Dni) != null) { throw new Exception("El usuario ya existe"); } var usuario = new ApplicationUser { UserName = user.Dni, Email = user.Email }; // Crea el usuario var result = UserManager.Create(usuario); if (result.Succeeded) { // Lo agrega al rol Docente UserManager.AddToRole(usuario.Id, "Docente"); string code = UserManager.GeneratePasswordResetToken(usuario.Id); var usuarioNuevo = _db.Users.Single(u => u.Id == usuario.Id); usuarioNuevo.EmailConfirmed = true; _db.SaveChanges(); var url = Url.Route("Default", new {controller = "Account", action = "ResetPassword", code = code.Base64ForUrlEncode()}); var urlBase = Request.RequestUri.GetLeftPart(UriPartial.Authority); var persona = _db.Personas.SingleOrDefault( p => p.PERSONA_DOCUMENTO_NUMERO.Trim().Contains(user.Dni.Trim()) && p.PERSONA_ES_DOCENTE == true ); // Si existe una persona con el mismo ID le setea algunos valores if (persona != null) { var savedUser = _db.Users.Find(usuario.Id); savedUser.USER_PERSONA_ID = persona.ID; persona.PERSONA_EMAIL = user.Email.ToUpper(); persona.PERSONA_ES_DOCENTE = true; persona.PERSONA_NOMBRE = user.Nombre.ToUpper(); persona.PERSONA_APELLIDO = user.Apellido.ToUpper(); _db.SaveChanges(); } //await sendMailWithSendgrid(user.Email, user.Dni, urlBase + url); Mailer.SendMailWithOffice365(user.Email, user.Dni, urlBase + url); var datos = new BatchCreateUsersResponseVM { Dni = user.Dni, MailEnviado = true, Mensaje = "Usuario creado" }; respuesta.Add(datos); } else { var usuarioExistente = UserManager.FindByEmail(user.Email); string code = UserManager.GeneratePasswordResetToken(usuarioExistente.Id); var url = Url.Route("Default", new { controller = "Account", action = "ResetPassword", code = code }); var urlBase = Request.RequestUri.GetLeftPart(UriPartial.Authority); Mailer.SendMailWithOffice365(user.Email, user.Dni, urlBase + url); var datos = new BatchCreateUsersResponseVM { Dni = user.Dni, MailEnviado = true, Mensaje = "El usuario existia, se envio mail para reinicio de contraseña" }; respuesta.Add(datos); } } catch (Exception ex) { return BadRequest(ex.Message); } } return Ok(respuesta); }
private async Task SignInAsync(ApplicationUser user, bool isPersistent) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie); AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(UserManager)); }