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")); }