Skip to content

Commit

Permalink
feat[User]: add constructor and get methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Fredrik Marjoni committed Feb 26, 2026
1 parent 0857d03 commit 837cf93
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 1 deletion.
111 changes: 110 additions & 1 deletion src/main/java/edu/group5/app/model/user/User.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,114 @@
package edu.group5.app.model.user;
/**
* User class represents a user in the system. It is an abstract class that will be extended by specific user types such as Donor, Recipient, and Admin.
* Each user has a unique userId, a role that defines their permissions in the system, and personal information such as first name, last name, email, and password hash.
* The constructor validates that all required fields are provided and throws an IllegalArgumentException if any of the fields are null or empty.
* This ensures that the User objects are always in a valid state when created.
*/
public abstract class User {
private int userId;
private String role;
private String firstName;
private String lastName;
private String email;
private String passwordHash;

/**
* Constructor for User class. Validates that all required fields
* are provided and throws an IllegalArgumentException if any of the fields are null or empty.
* @param userId the unique identifier for the user, must be a positive integer
* @param role the role of the user (e.g., "Donor", "Recipient", "Admin")
* @param firstName the first name of the user
* @param lastName the last name of the user
* @param email the email address of the user
* @param passwordHash the hashed password of the user
*/
public User(int userId, String role, String firstName,
String lastName, String email, String passwordHash) {
if (userId <= 0) {
throw new IllegalArgumentException("User ID must be positive");
}
if (role == null || role.trim().isEmpty()) {
throw new IllegalArgumentException("Role cannot be null or empty");
}
if (firstName == null || firstName.trim().isEmpty()) {
throw new IllegalArgumentException("First name cannot be null or empty");
}
if (lastName == null || lastName.trim().isEmpty()) {
throw new IllegalArgumentException("Last name cannot be null or empty");
}
if (email == null || email.trim().isEmpty()) {
throw new IllegalArgumentException("Email cannot be null or empty");
}
if (passwordHash == null || passwordHash.trim().isEmpty()) {
throw new IllegalArgumentException("Password hash cannot be null or empty");
}
this.userId = userId;
this.role = role.trim();
this.firstName = firstName.trim();
this.lastName = lastName.trim();
this.email = email.trim();
this.passwordHash = passwordHash;
}

public class User {
/**
* Gets the unique identifier for the user.
* @return the userId of the user
*/
public int getUserId() {
return userId;
}

/**
* Gets the role of the user, which defines their permissions in the system.
* @return the role of the user
*/
public String getRole() {
return role;
}

/**
* Gets the first name of the user.
* @return the first name of the user
*/
public String getFirstName() {
return firstName;
}

/**
* Gets the last name of the user.
* @return the last name of the user
*/
public String getLastName() {
return lastName;
}

/**
* Gets the email address of the user.
* @return the email of the user
*/
public String getEmail() {
return email;
}

/**
* Gets the hashed password of the user.
* This is used for authentication purposes and should not be exposed in plaintext.
* @return the password hash of the user
*/
public String getPasswordHash() {
return passwordHash;
}

/**
* Verifies if the provided password matches the stored password hash for the user.
* This method should implement the logic to hash the input password
* and compare it with the stored password hash.
* @param password the plaintext password to verify
* @return true if the password is correct, false otherwise
*/
public boolean verifyPassword(String password) {
// TODO Implement password verification logic here, e.g., using a hashing algorithm
return true; // Placeholder return value
}
}
Binary file modified target/classes/edu/group5/app/model/user/User.class
Binary file not shown.

0 comments on commit 837cf93

Please sign in to comment.