Exemple #1
0
        public (bool, string) LogIn(Dictionary <string, string> data)
        {
            if (!data.ContainsKey("login"))
            {
                return(false, "Należy podać login");
            }
            if (!data.ContainsKey("password"))
            {
                return(false, "Należy podać hasło");
            }

            string login    = data["login"];
            string password = data["password"];

            var userRep = new RepositoryFactory().GetRepository <User>();
            var user    = userRep.GetDetail(p => p.Login == login);

            if (user == null)
            {
                return(false, "Podany użytkownik nie istnieje");
            }

            var hasher = new HasherFactory().GetHasher();

            if (!hasher.Check(user.Password, password))
            {
                return(false, "Nieprawidłowe hasło");
            }

            IUser loginUser;

            if (user.Rank == Rank.Student)
            {
                var sdRep = new RepositoryFactory().GetRepository <StudentData>();
                var sd    = sdRep.GetDetail(p => p.UserId == user.Id);
                loginUser = new UserFactory().CreateStudent(user, sd);
            }
            else
            {
                loginUser = new UserFactory().CreateAdmin(user);
            }

            var(loggedIn, token) = _loggedUsers.LogInUser(loginUser);

            return(loggedIn ? (true, token) : (false, "Użytkownik jest już zalogowany"));
        }