Skip to content

refactor(auth): streamline user retrieval and add admin user reposito… #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 5, 2025

Conversation

fulleni
Copy link
Member

@fulleni fulleni commented Jul 5, 2025

…ry initialization

Status

READY/IN DEVELOPMENT/HOLD

Description

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Bug fix (non-breaking change which fixes an issue)
  • ❌ Breaking change (fix or feature that would cause existing functionality to change)
  • 🧹 Code refactor
  • ✅ Build configuration change
  • 📝 Documentation
  • 🗑️ Chore

@fulleni fulleni merged commit 671691f into main Jul 5, 2025
1 check failed
@fulleni fulleni deleted the fix_rbac branch July 5, 2025 18:10
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @fulleni, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on improving the authentication module by streamlining user retrieval logic within the AuthService and enhancing the application's startup process by pre-populating the user repository with an admin user. These changes aim to increase code reusability, readability, and provide a more robust initial state for user management.

Highlights

  • Auth Service Refactoring: I've refactored the AuthService to centralize user retrieval by email. Previously, the logic for finding a user by email was duplicated in login and registerUser methods. I've extracted this into a new private helper method, _findUserByEmail, which now encapsulates the readAllByQuery call and error handling, making the AuthService more concise and maintainable.
  • Admin User Repository Initialization: I've updated the application's middleware to initialize the user repository with pre-defined admin user data. This is achieved by introducing a new helper function, _createAdminUserRepository, which uses usersFixturesData to seed the in-memory user repository. This ensures that a default admin user is available upon application startup, likely for development or testing environments.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The code changes introduce a new helper method _findUserByEmail in AuthService to streamline user retrieval and adds a function _createAdminUserRepository in routes/_middleware.dart to initialize the user repository with admin data.

Comment on lines +549 to +559
Future<User?> _findUserByEmail(String email) async {
try {
final query = {'email': email};
final response = await _userRepository.readAllByQuery(query);
if (response.items.isNotEmpty) {
return response.items.first;
}
return null;
} on HtHttpException {
rethrow;
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The try...on HtHttpException { rethrow; } block is unnecessary as exceptions from _userRepository.readAllByQuery will automatically propagate up the call stack where they are already handled.

Future<User?> _findUserByEmail(String email) async {
  try {
    final query = {'email': email};
    final response = await _userRepository.readAllByQuery(query);
    if (response.items.isNotEmpty) {
      return response.items.first;
    }
    return null;
  } on HtHttpException {
    rethrow;
  }
}

Comment on lines +116 to +117
// This assumes `adminUserFixtureData` is available from `ht_shared`.
final initialData = usersFixturesData;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The comment on line 116 refers to adminUserFixtureData, but the code on the next line uses usersFixturesData. Update the comment to match the variable being used.

// This assumes `usersFixturesData` is available from `ht_shared`.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant