A collection of evolving definitions that describe a generic and reusable user schema for systems that require authentication and authorization.
Over the course of my career I've built and worked on a significant number of systems spread across a variety of industries that require user authentication. While each system may be unique in architecture and in purpose, the user authentication and authorization aspects have only minor variations.
In short, I'm tired of repeatedly building the same thing. So to save myself (and hopefully others) time, I've generified it for easy reuse.
Represents the user's role in the system. This is optional for systems that do not support role-based classification.
Represents the type of account the user has, typically 'Employee' or 'Customer'.
Represents a single user who accesses the system.
Represents a collection of details associated to the user.
Represents a token, typically distributed through an email, that when activated verifies the user intended to create the account.
Represents a social identity provider (Google, Apple, Facebook, etc) that is registered within the system to authenticate a user's identity. This is optional for systems that do not use identity-based authentication.
Represents a social identity that the user will authenticate themselves with. This is optional for systems that do not use identity-based authentication.
Represents a set of credentials that the user will authenticate themselves with.
Represents a login attempt by a user.
If you're interested in contributing to this project, please read through the contribution guide found here.
This project is licensed under the MIT license.