Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 private async Task SignInAsync(ApplicationUser user, bool isPersistent)
 {
     AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie);
     AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(UserManager));
 }