easyuser 0.0.36
easyuser: ^0.0.36 copied to clipboard
An easy to use user management package with Firebase as backend.
Easy User #
- User management package based on Firebase Realtime Database.
Security rules #
- Install the security rules from the database security rules file.
Database Structure #
-
users: is the root node of the database.users/<uid>: is the user node.users/<uid>/name: is the name of the user.users/<uid>/photoUrl: is the photo url of the user.users/<uid>/role: is the role of the user.users/<uid>/status: is the status of the user.users/<uid>/createdAt: is the creation date of the user.users/<uid>/updatedAt: is the last update date of the user.users/<uid>/deletedAt: is the deletion date of the user.users/<uid>/deleted: is the delete status of the user.users/<uid>/password: is the password of the user.users/<uid>/phone: is the phone of the user.users/<uid>/address: is the address of the user.users/<uid>/gender: is the gender of the user. "M" or "F".users/<uid>/birthYear: is the birth year of the user.users/<uid>/birthMonth: is the birth month of the user.users/<uid>/birthDay: is the birth day of the user.
-
user-phone-sign-in-numbers: is the list for the phone numbers that users used to sign in.user-phone-sign-in-numbers/<phoneNumber>: is a phone number that a user used to sign in.user-phone-sign-in-numbers/<phoneNumber>/lastSignedInAt: is the milliseconds when the user used the phone number.
Widgets #
UserField #
This wdigets gets only one field of user data and displays.
-
field: Required. It is to get the minium data of the user field. -
uid: is the user id to display. -
onLoading: is the loading state of the widget. -
onError: is the error state of the widget. -
builder: is the builder function to build the widget. -
sync: is the sync option. if it's true, it will rebuild the widget when the user data is updated. -
initialData: is the initial data that is used on very first time. The data may be cached. If the data is not cached, then it will be used as initial data. -
cache: is the cache option. If it's true, then it will use cached data only. If there is no cached data, then it will get data from the server.
UserModel #
This wdiget passes the User model object on the builder method. Meaning, this widget can display all the user data.
-
uid: is the user id to display. -
onLoading: is the loading state of the widget. -
builder: is the builder function to build the widget. -
sync: is the sync option. if it's true, it will rebuild the widget when the user data is updated. -
initialData: is the initial data that is used on very first time. The data may be cached. If the data is not cached, then it will be used as initial data. -
cache: is the cache option. If it's true, then it will use cached data only. If there is no cached data, then it will get data from the server.
UserAvtar #
UserBuildAvatar(photoUrl: null, initials: null)
UI and UX Customization #
prefixActionBuilderOnPublicProfileScreen #
Logics #
Account Linking #
/registered-phone-number: is the node to check if the phone number is registered.- Why?
- To link the phone number to the existing user account.
- User may sign-in with other sign-in methods like Anonymous, Email, Google, Apple, Facebook, or etc.
- If the phone number is already registered (or signed-in before), it means, the phone number belongs to an account.
- You cannot link the phone number to another account when it is already linked to an account.
- Once the credential of phone number is used, it cannot be used again. (The credential may be reused on other methods.)
- You may try to link the phone number credential and if it's successful, well, then it's linked.
- But what if it fails? you cannot reuse the credential. It means, the user must get new credential by sen
- Why?
flowchart TB
node_1(["Anonymous User Login"])
node_2{"Phone Sign-In with Anonymous Account Link?"}
node_3["Provide if the phone number is registered already"]
node_1 --> node_2
node_2 --"Yes"--> node_3
Phone number number sign-in #
-
If user signs in with phone number, then the phone number is saved in the
user-phone-sign-in-numbers/<phone-number>node.- This is only the purpose of checking if the phone number is already registered or not.
- If the phone nubmer is not registered, then the user can link his account with phone number.
- If the phone number is already registered, then the user cannot link the phone number to his account. Instead, the user can sign in with the phone number.
-
If ever, the system needs to reset the phone numbers of the users, then run
tsx reset-phone-sign-in-numberscommand ineasy-engine/toolsdirectory.