Package org.minijax.security
Class Security<T extends SecurityUser>
java.lang.Object
org.minijax.security.Security<T>
- All Implemented Interfaces:
jakarta.ws.rs.core.SecurityContext
@Provider
@RequestScoped
public class Security<T extends SecurityUser>
extends java.lang.Object
implements jakarta.ws.rs.core.SecurityContext
The Security class manages logging in and out of the application.
There should be a new unique Security instance for each request.
It wraps the User DAO to retrieve users.
It uses BCrypt to check passwords.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCOOKIE_NAMEstatic intMINIMUM_PASSWORD_LENGTHFields inherited from interface jakarta.ws.rs.core.SecurityContext
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH -
Constructor Summary
Constructors Constructor Description Security(SecurityDao dao, jakarta.ws.rs.core.Configuration configuration, java.lang.String authorization, java.lang.String cookie) -
Method Summary
Modifier and Type Method Description ChangePasswordResultchangePassword(java.lang.String oldPassword, java.lang.String newPassword, java.lang.String confirmNewPassword)Changes the current user's password.java.lang.StringforgotPassword(SecurityUser user)Handles a request for "Forgot Password".java.lang.StringgetAuthenticationScheme()java.lang.StringgetSessionToken()Returns the session token.java.lang.Class<SecurityUser>getUserClass()TgetUserPrincipal()Returns the currently logged in user for this HTTP request.booleanisLoggedIn()Returns true if a user is logged in for this HTTP request.booleanisSecure()booleanisUserInRole(java.lang.String role)LoginResultlogin(java.lang.String email, java.lang.String password)Logs in the user with email address and password.jakarta.ws.rs.core.NewCookieloginAs(SecurityUser candidate)Logs in as another user.jakarta.ws.rs.core.NewCookielogout()Logs out the user.voidrequireLogin()Requires that the user is logged in.ResetPasswordResultresetPassword(java.lang.String resetId, java.lang.String newPassword, java.lang.String confirmNewPassword)Handles a request for "Reset Password".Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
MINIMUM_PASSWORD_LENGTH
public static final int MINIMUM_PASSWORD_LENGTH- See Also:
- Constant Field Values
-
COOKIE_NAME
public static final java.lang.String COOKIE_NAME- See Also:
- Constant Field Values
-
-
Constructor Details
-
Security
@Inject public Security(SecurityDao dao, @Context jakarta.ws.rs.core.Configuration configuration, @HeaderParam("Authorization") java.lang.String authorization, @CookieParam("a") java.lang.String cookie)
-
-
Method Details
-
getUserClass
-
getUserPrincipal
Returns the currently logged in user for this HTTP request. Returns null if not logged in.- Specified by:
getUserPrincipalin interfacejakarta.ws.rs.core.SecurityContext- Returns:
- the currently logged in user.
-
isLoggedIn
public boolean isLoggedIn()Returns true if a user is logged in for this HTTP request.- Returns:
- true if user is logged in; false otherwise.
-
requireLogin
public void requireLogin()Requires that the user is logged in. -
getSessionToken
public java.lang.String getSessionToken()Returns the session token.- Returns:
- The session token.
-
login
Logs in the user with email address and password. Returns the user on success.- Parameters:
email- The user's email address.password- The user's plain text password.- Returns:
- the user details.
-
loginAs
Logs in as another user.- Parameters:
candidate- The candidate user account.- Returns:
- The login cookie.
-
logout
public jakarta.ws.rs.core.NewCookie logout()Logs out the user. -
changePassword
public ChangePasswordResult changePassword(java.lang.String oldPassword, java.lang.String newPassword, java.lang.String confirmNewPassword)Changes the current user's password.- Parameters:
oldPassword- The old password.newPassword- The new password.confirmNewPassword- The confirmed new password.- Returns:
- The change password result.
-
forgotPassword
Handles a request for "Forgot Password". See this stackoverflow article for the general design: http://stackoverflow.com/a/1102817/2051724- Parameters:
user- The user.- Returns:
- The reset code to be sent to the user.
-
resetPassword
public ResetPasswordResult resetPassword(java.lang.String resetId, java.lang.String newPassword, java.lang.String confirmNewPassword)Handles a request for "Reset Password". See this stackoverflow article for the general design: http://stackoverflow.com/a/1102817/2051724- Parameters:
resetId- The reset ID.newPassword- The new password.confirmNewPassword- The confirmed new password.- Returns:
- The reset password result with optional cookie.
-
isUserInRole
public boolean isUserInRole(java.lang.String role)- Specified by:
isUserInRolein interfacejakarta.ws.rs.core.SecurityContext
-
isSecure
public boolean isSecure()- Specified by:
isSecurein interfacejakarta.ws.rs.core.SecurityContext
-
getAuthenticationScheme
public java.lang.String getAuthenticationScheme()- Specified by:
getAuthenticationSchemein interfacejakarta.ws.rs.core.SecurityContext
-