Beispiel #1
0
        public ActionResult Login(SignInDTO model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View("Welcome", model));
                }

                if (Account.LoginSL(model.Login.EmailOrUsername, model.Login.Password))
                {
                    Session["MiniBirdAccount"] = Account.CreateSessionSL(model.Login.EmailOrUsername);

                    if (model.Login.RememberMe)
                    {
                        LoginCookie(model.Login.EmailOrUsername);
                    }

                    return(RedirectToAction("Timeline", "Account"));
                }
                else
                {
                    ViewBag.Message = "Datos incorrectos. Vuelva a iniciar sesión.";
                    return(View("Welcome", model));
                }
            }
            catch (Exception ex)
            {
                return(ProcessError(ex));
            }
        }
Beispiel #2
0
        public User UserName(SignInDTO userLogIn)
        {
            var userName = _context.Users.Where(u => u.userName.CompareTo(userLogIn.UserName) == 0 &&
                                                u.password.CompareTo(userLogIn.password) == 0).FirstOrDefault();

            return(userName);
        }
Beispiel #3
0
        public ActionResult Register(SignInDTO model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View("Welcome", model));
                }

                if (Account.RegisterSL(model.Register.UserName, model.Register.Email, model.Register.Password))
                {
                    Session["MiniBirdAccount"] = Account.CreateSessionSL(model.Register.Email);
                    return(RedirectToAction("Timeline", "Account"));
                }
                else
                {
                    ViewBag.Message = "El usuario/correo ya está registrado.";
                    return(View(model));
                }
            }
            catch (Exception ex)
            {
                return(ProcessError(ex));
            }
        }
 public UserModel Map(SignInDTO signInDTO)
 {
     return(new UserModel {
         Username = signInDTO.Username,
         Password = signInDTO.Password
     });
 }
        public async Task <AuthenticationDTO> Authenticate(SignInDTO credentials)
        {
            User user = await _userManager.FindByEmailAsync(credentials.Login)
                        ?? await _userManager.FindByNameAsync(credentials.Login);

            if (user == null)
            {
                throw new NotFoundException("A user with the provided login does not exist.");
            }

            if (!await _userManager.CheckPasswordAsync(user, credentials.Password))
            {
                throw new UnauthorizedException("Failed to sign in with the provided login/password combination. Try again.");
            }

            JwtSecurityToken token = await GenerateToken(user);

            string tokenString =
                new JwtSecurityTokenHandler().WriteToken(token);

            AuthenticationDTO userInfo = new AuthenticationDTO()
            {
                Id       = Int32.Parse(token.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value),
                Username = token.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value,
                Roles    = token.Claims.Where(c => c.Type == ClaimTypes.Role)
                           .Select(r => r.Value).ToArray(),
                Token        = tokenString,
                RefreshToken = await GenerateRefreshToken(user)
            };

            return(userInfo);
        }
Beispiel #6
0
        public void SignInTest_ReturnAuthCorrect()
        {
            #region Arrange
            SignInDTO signInDTO = new SignInDTO
            {
                Email    = "*****@*****.**",
                Password = "******",
            };

            User user = new User(1, "Name1", "Email1", "Pass1");

            model = new Mock <IRepository>();
            model.Setup(repo => repo.GetUserByEmailAndPassword(
                            signInDTO.Email, signInDTO.Password))
            .Returns(Task.FromResult(user));

            controller = new AccountController(model.Object);
            #endregion

            // Act
            var result = controller.SignIn(signInDTO);

            // Assert
            Assert.IsType <OkObjectResult>(result.Result);
        }
        public async Task ChangePassword(SignInDTO credentials, string newPassword)
        {
            User user = await _userManager.FindByEmailAsync(credentials.Login);

            if (user == null)
            {
                throw new NotFoundException("A user with the provided login does not exist.");
            }

            if (!await _userManager.CheckPasswordAsync(user, credentials.Password))
            {
                throw new BadRequestException("Failed to auhenticate with the provided password.");
            }

            IdentityResult result = await _userManager.ChangePasswordAsync(user,
                                                                           credentials.Password, newPassword);

            if (!result.Succeeded)
            {
                StringBuilder errMessage = new StringBuilder();
                foreach (IdentityError err in result.Errors)
                {
                    errMessage.Append($"{err.Code}  {err.Description}/n");
                }
                throw new ServerErrorException(errMessage.ToString());
            }
        }
Beispiel #8
0
        public async Task <IActionResult> SignIn([FromBody] SignInDTO loginModel)
        {
            var user = await UserManager.GetByCredentialsAsync(loginModel.Email, loginModel.Password);

            if (user == null)
            {
                //...
            }
            var now = DateTime.Now;

            var jwt = new JwtSecurityToken
                      (
                issuer: AuthOptions.Issuer,
                audience: AuthOptions.Audience,
                notBefore: now,
                expires: now.Add(TimeSpan.FromMinutes(AuthOptions.Lifetime)),
                signingCredentials: new SigningCredentials(AuthOptions.Key, SecurityAlgorithms.HmacSha256),
                claims: new List <Claim> {
                new Claim(type: "user-id", value: user.Id.ToString())
            }
                      );
            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            return(Ok(new
            {
                token = encodedJwt
            }));
        }
        public async Task <IActionResult> SignIn([FromBody] SignInDTO UserData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new User
            {
                Email       = UserData.Contact.Email,
                UserName    = UserData.Contact.UserName,
                PhoneNumber = UserData.Contact.PhoneNumber
            };

            var result = await CreateUser(user, UserData.Password, "Manager");

            if (result.Succeeded)
            {
                user = await _userManager.FindByEmailAsync(UserData.Contact.Email);

                UserData.Id = user.Id;
                UserData.Roles.Add("Manager");
                return(Ok(UserData));
            }

            return(BadRequest(result.Errors));
        }
Beispiel #10
0
        public IActionResult username(SignInDTO signInDTO)
        {
            var findUser = _userRepo.UserName(signInDTO);

            // var authenticate =_userRepo.CheckPassword(validate,username);

            return(Ok(findUser));
        }
Beispiel #11
0
        public async Task CreateUserAsync(SignInDTO signInDto)
        {
            //    var User = new User { UserName = viewModel.NickName };
            await _appDbContext.Users.AddAsync(new User { UserName = signInDto.UserName });

            await _appDbContext.SaveChangesAsync();

            //var result = await _userManager.CreateAsync(User);
        }
        public async Task <IActionResult> SignIn([FromBody] SignInDTO signInDTO)
        {
            if (!ModelState.IsValid || signInDTO == null)
            {
                return(BadRequest("Error: Model state is not valid."));
            }

            // Email validation
            if (signInDTO.Email == null || signInDTO.Email == String.Empty)
            {
                return(BadRequest("Error: Empty Email."));
            }

            if (!IsValidEmail(signInDTO.Email))
            {
                return(BadRequest("Error: Email is not valid."));
            }

            // Password validatition
            if (signInDTO.Password == null || signInDTO.Password == String.Empty)
            {
                return(BadRequest("Error: Empty Password."));
            }

            User user = await _context
                        .GetUserByEmailAndPassword(signInDTO.Email, signInDTO.Password);

            if (user == null)
            {
                return(NotFound("Error: Not correct email or password."));
            }

            // Create claims with data
            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Role, "User")
            };

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Tokens:Key"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var token = new JwtSecurityToken(_configuration["Tokens:Issuer"],
                                             _configuration["Tokens:Issuer"],
                                             claims,
                                             expires: DateTime.Now.AddHours(24),
                                             signingCredentials: creds);

            // Write token to memory
            string resToken = new JwtSecurityTokenHandler().WriteToken(token);

            // Create DTO for response
            UserDTO userDTO = new UserDTO(resToken, DateTime.Now.AddHours(24), DateTime.Now, user);

            return(Ok(userDTO));
        }
        public async Task <ActionResult <AuthenticationDTO> > SignIn([FromBody] SignInDTO signInModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("The provided user model is not valid."));
            }


            return(Ok(await _accountService.Authenticate(signInModel)));
        }
        public async Task <ActionResult <TokenDTO> > SignIn([FromBody] SignInDTO credentials)
        {
            var result = await authenticationService.SignInAsync(credentials.Phone, credentials.Password);

            if (result == null)
            {
                return(BadRequest());
            }

            return(result);
        }
Beispiel #15
0
        public async Task <ActionResult> Login([FromBody] SignInDTO model)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Username, model.Password, false, false);

            if (result.Succeeded)
            {
                var appUser = _userManager.Users.SingleOrDefault(r => r.UserName == model.Username);
                return(Ok(new { title = await GenerateJwtToken(model.Username, appUser) }));
            }

            throw new ApplicationException("INVALID_LOGIN_ATTEMPT");
        }
        public async Task <IActionResult> SignIn([FromBody] SignInDTO dto)
        {
            var response = await _httpClient.PostAsJsonAsync(ApiRoutes.ApiSignIn, dto);

            if (response.IsSuccessStatusCode)
            {
                var token = JsonSerializer.Deserialize <JwtTokenDTO>(await response.Content.ReadAsStringAsync(), _jsonOptions);
                await UpdateServerStateAsync(accessToken : token.Token, loggedIn : true);

                return(Ok());
            }
            return(Unauthorized(await response.Content.ReadAsStringAsync()));
        }
        public async Task <IActionResult> ChangePassword([FromQuery] string oldPassword, string newPassword)
        {
            SignInDTO credentials = new SignInDTO()
            {
                Login = User.Claims.FirstOrDefault
                            (c => c.Type == ClaimTypes.Email).Value,
                Password = oldPassword
            };

            await _accountService.ChangePassword(credentials, newPassword);

            return(NoContent());
        }
Beispiel #18
0
        public async void Test_Login()
        {
            string    action = "/account/login?returnUrl=http://localhost:50995/";
            SignInDTO model  = new SignInDTO
            {
                UserName = "******",
                Password = "******",
            };
            var result = await _client.PostAsJsonAsync(action, model);

            result.EnsureSuccessStatusCode();

            var data = await result.Content.ReadAsStringAsync();
        }
        public async Task <ActionResult> SignIn(SignInDTO signInDto)
        {
            if (ModelState.IsValid)
            {
                await UserService.CreateUserAsync(signInDto);

                var User = await UserService.FindUserByNameAsync(signInDto.UserName);

                await CardService.NewGameAsync(User.UserId);

                return(Ok(signInDto));
            }

            return(BadRequest());
        }
Beispiel #20
0
        public IActionResult Login(SignInDTO signIn)
        {
            IActionResult response = Unauthorized();
            var           user     = _userFromRepo.UserName(signIn);

            // var result =  _service.PasswordChecker(user, signIn);
            if (user != null)
            {
                var tokenString = _service.generateToken(user);
                response = Ok(new { token = tokenString,
                                    user });
            }

            return(response);
        }
Beispiel #21
0
        public async Task <bool> SignInAsync(SignInDTO signInDTO)
        {
            var tokenPair = await _tokenProvider.GetNewTokensAsync(signInDTO.Username, signInDTO.Password);

            await _tokenStorageService.SetTokensAsync(tokenPair);

            if (!await _tokenProvider.ValidateTokenAsync(tokenPair.AccessToken))
            {
                return(false);
            }
            var claims = _tokenProvider.ParseToken(tokenPair.AccessToken);

            _jwtAuthStateProvider.MarkUserAsAuthenticated(claims);
            return(true);
        }
Beispiel #22
0
        public void SignInTest_ReturnModelStateIsNotValid()
        {
            #region Arrange
            SignInDTO signInDTO = null;

            model = new Mock <IRepository>();

            controller = new AccountController(model.Object);
            #endregion

            // Act
            var result = controller.SignIn(signInDTO);

            // Assert
            Assert.IsType <BadRequestObjectResult>(result.Result);
        }
        public async Task <ActionResult <UserDTO> > LoginEndUser(SignInDTO signInDTO)
        {
            var user = await _userManager.FindByEmailAsync(signInDTO.Email);

            if (user == null)
            {
                return(BadRequest("Invalid Email"));
            }

            var result = await _signInManager.CheckPasswordSignInAsync(user, signInDTO.Password, false);

            if (result.Succeeded)
            {
                return(Ok(returnRTO(user)));
            }
            return(Unauthorized());
        }
Beispiel #24
0
        public async Task <ApiResponse> SignIn([FromBody] SignInDTO arg)
        {
            try
            {
                var ip    = httpService.IpAddress(Request, HttpContext);
                var token = await userService.SignInAsync(arg, ip);

                return(new ApiResponse(InfoMessages.SuccesfullySignedIn, token, HttpStatusCode.OK.ToInt()));
            }
            catch (CustomException ex)
            {
                throw new ApiException(ex, ex.StatusCode);
            }
            catch (Exception ex)
            {
                throw new ApiException(ex);
            }
        }
Beispiel #25
0
        public async Task <UserTokenDTO> SignInAsync(SignInDTO arg, string ip)
        {
            try
            {
                var user = await FindUser(arg.Username);

                if (user == null)
                {
                    throw new WrongCredentialsException();
                }

                if (user != null && !user.PhoneNumberConfirmed)
                {
                    throw new AccountNotVerifiedException();
                }

                var result = await signInManager.CheckPasswordSignInAsync(user, arg.Password, true);

                if (result.Succeeded)
                {
                    var refreshToken = jwtService.GenerateRefreshToken(ip);
                    user.RefreshTokens.Add(refreshToken);
                    await db.SaveChangesAsync();

                    var roles = await userManager.GetRolesAsync(user);

                    return(new UserTokenDTO(jwtService.GenerateAuthorizationToken(user, roles),
                                            refreshToken.Token));
                }
                else
                {
                    if (result.IsLockedOut)
                    {
                        throw new AccountLockedException();
                    }

                    throw new WrongCredentialsException();
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
        }
        public async Task <ResultDTO> SignIn([FromBody] SignInDTO model)
        {
            var result = default(ResultDTO);

            if (!ModelState.IsValid)
            {
                var errors = ModelStateCustomValidator.GetErrorsFromModel(ModelState);
                result = new ErrorResultDTO
                {
                    Status  = 403,
                    Message = "Invalid sign in attempt",
                    Errors  = errors
                };
            }
            else
            {
                var loginResult = await signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

                if (!loginResult.Succeeded)
                {
                    result = new ErrorResultDTO
                    {
                        Status  = 403,
                        Message = "Sign in error",
                        Errors  = new string[] { "Incorrect email or password" }
                    };
                }
                else
                {
                    var user = await userManager.FindByEmailAsync(model.Email);

                    await signInManager.SignInAsync(user, false);

                    result = new AuthResultDTO
                    {
                        Status  = 200,
                        Message = "Ok",
                        Token   = JWTTokenService.GenerateToken(user)
                    };
                }
            }

            return(result);
        }
        public async Task <ActionResult <RequestResultDTO> > Authenticate([FromForm] SignInDTO signInDTO)
        {
            var userModel = _mapService.Map(signInDTO);
            var result    = await _authService.Authenticate(userModel);

            var resultDTO = _mapService.Map(result);

            if (!resultDTO.IsSuccess)
            {
                return(BadRequest(resultDTO));
            }
            Response.Cookies.Append("authToken", result.Token, new CookieOptions {
                Path = "/", HttpOnly = true, Expires = DateTime.UtcNow.AddMinutes(5), Secure = true, SameSite = SameSiteMode.Strict
            });
            Response.Cookies.Append("user", result.UserId.ToString(), new CookieOptions {
                Path = "/", HttpOnly = false, Expires = DateTime.UtcNow.AddMinutes(5), SameSite = SameSiteMode.Strict
            });
            return(Ok(resultDTO));
        }
        public async Task <IActionResult> PutCalendar(IFormFile file)
        {
            //file is a csv
            var reader = new StreamReader(file.OpenReadStream());
            await reader.ReadLineAsync();//discard column names

            string v = "";

            while ((v = await reader.ReadLineAsync()) != null)
            {
                v = v.Trim('"');
                var    split      = v.Split("\",\"");//get signInDTO from each line
                string signInJSON = string.Format(
                    "{{\"StartTime\":{0},\"EndTime\":{1},"
                    + "\"StudentId\":{2},\"MachineName\":{4}}}",
                    $"\"{split[0]}\"",
                    $"\"{split[1]}\"",
                    $"\"{split[3]}\"",
                    $"\"{split[2]}\"");
                SignInDTO signInDto
                    = JsonSerializer.Deserialize <SignInDTO>(signInJSON);
                //make SignIn from SignInDTO
                var machine = await
                              _context.Machines.FindAsync(signInDto.Machine.Name);

                var student = await
                              _context.Students.FindAsync(signInDto.StudentId.Value);

                if (machine == null || student == null)
                {
                    return(NotFound());
                }
                SignIn signIn = new SignIn();
                signIn.Student   = student;
                signIn.Machine   = machine;
                signIn.StartTime = signInDto.StartTime;
                signIn.EndTime   = signInDto.EndTime;
                //add current record to db
                _context.SignIns.Add(signIn);
                await _context.SaveChangesAsync();
            }
            return(NoContent());
        }
Beispiel #29
0
        public object SignIn([FromBody] SignInDTO requestUser)
        {
            try
            {
                using (var context = new TodoAppContext())
                {
                    using (MD5 md5Hash = MD5.Create())
                    {
                        var user = context.users.Where(u => (u.email == requestUser.credential || u.username == requestUser.credential)).FirstOrDefault();

                        if (user == null)
                        {
                            return(NotFound());
                        }

                        string currPassword = GetMd5Hash(md5Hash, requestUser.password);

                        if (!VerifyMd5Hash(md5Hash, requestUser.password, user.password))
                        {
                            return(Request.CreateResponse(HttpStatusCode.NotFound));
                        }
                        var BASIC = CryptographyService.EncryptValue($"{user.username}:{user.password}");

                        var result = new
                        {
                            username = user.username,
                            name     = user.name,
                            lastName = user.lastName,
                            email    = user.email,
                            basicTkn = BASIC
                        };
                        //HttpContext.Current.Response.AppendHeader("Basic", BASIC);
                        //Request.Headers.Add("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{user.username}:{user.password}")));
                        return(Request.CreateResponse(HttpStatusCode.OK, result));
                    }
                };
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, e));
            }
        }
        public IHttpActionResult SignIn(SignInDTO signInData)
        {
            try
            {
                var result = _userService.ValidateUser(signInData.Email, signInData.Password);

                if (result != null)
                {
                    return(Ok(result));
                }
                else
                {
                    return(Content(HttpStatusCode.Forbidden, "Wrong credentials."));
                }
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "An error occured. Please try again."));
            }
        }