🔐Authentication
Authentication Domain in FoodService MVC Application
Overview
The authentication domain in the FoodService MVC application is designed to handle user authentication and authorization processes. This includes user registration (sign-up), login (sign-in), managing user roles, and retrieving user information. The domain is structured to ensure secure and efficient handling of these operations, leveraging modern ASP.NET Core MVC practices and patterns.
Key Components
Controllers
AuthController
Purpose: Manages user authentication actions such as sign-up and sign-in.
Key Actions:
SignUp()
: Displays the sign-up page.SignUp(SignUpDto)
: Handles form submission for user registration.SignIn()
: Displays the sign-in page.SignIn(SignInDto)
: Handles form submission for user login.
HTTP Requests
AuthHttpRequest
Purpose: Provides methods to make HTTP requests related to authentication.
Key Methods:
SignUp(SignUpDto)
: Registers a new user.SignIn(SignInDto)
: Authenticates a user and retrieves an SSO token.AddUserToAdminRole(int userId)
: Adds a user to the admin role.GetCurrentUser()
: Retrieves information about the currently authenticated user.GetUserDto(int id)
: Retrieves a user DTO by ID.ListUsers()
: Lists all users.
Models
Data Transfer Objects (DTOs)
SignUpDto: Represents data required for user registration.
SignInDto: Represents data required for user login.
SsoDto: Represents Single Sign-On (SSO) token details.
UserDto: Represents detailed user information.
UserBase: Basic user information model.
ClientUser: Represents user data for client-side operations.
Responses
ResponseCommon
Purpose: Encapsulates the response structure for HTTP requests.
Attributes:
IsSuccess
: Indicates if the request was successful.Message
: Contains any error or success messages.Data
: Contains the data returned by the request.StatusCode
: HTTP status code of the response.
View Components
AuthenticationStatusViewComponent
Purpose: Determines and displays the authentication status of the user in the UI.
Key Method:
Invoke()
: Checks if the user is logged in and returns the appropriate view.
Services
AccessTokenManager
Purpose: Manages the storage and retrieval of the user's access token.
Key Functions:
SetAccessToken(string token, DateTime expiration, string roles)
: Stores the access token and related information.GetAccessToken()
: Retrieves the stored access token.
LanguageService
Purpose: Provides localization services for the application.
Key Functions:
GetKey(string key)
: Retrieves the localized string for a given key.
Workflow
Sign-Up Process:
User navigates to the sign-up page.
Submits the sign-up form with user details.
AuthController.SignUp(SignUpDto)
processes the form and sends a request toAuthHttpRequest.SignUp(SignUpDto)
.If successful, the user is redirected to the sign-in page.
Sign-In Process:
User navigates to the sign-in page.
Submits the sign-in form with login credentials.
AuthController.SignIn(SignInDto)
processes the form and sends a request toAuthHttpRequest.SignIn(SignInDto)
.If successful, the user's token is stored using
AccessTokenManager
, and the user is redirected to the home page or profile page.
User Role Management:
Admin can add a user to the admin role using
AuthHttpRequest.AddUserToAdminRole(int userId)
.
Retrieving User Information:
Current user information can be retrieved using
AuthHttpRequest.GetCurrentUser()
.Specific user details can be retrieved using
AuthHttpRequest.GetUserDto(int id)
.
Displaying Authentication Status:
AuthenticationStatusViewComponent
checks if the user is authenticated and renders the appropriate UI elements (e.g., Sign-Up, Sign-In, Profile).
Last updated