LSP: two users: an admin, and a common user. CLEARLY we can see these two should not have the same functionality, thus a GOOD design pattern. Yet clearly in violation of LSP. Esplain please.
The admin user don't necessarily have to inherit from the common user. They can extend the same base class or implement the same interface. Afaik LSP doesn't say anything about the abstract methods(it doesn't make sense to call them on the base class anyway). So you put the common methods(e.g. getName) in the base class, you won't break those in the different roles, and make the role dependent methods abstract.