Files
WebConsole-2.4-PLUS/src/es/mesacarlos/webconsole/auth/LoginManager.java

80 lines
2.2 KiB
Java

package es.mesacarlos.webconsole.auth;
import java.net.InetSocketAddress;
import java.util.ArrayList;
public class LoginManager {
private ArrayList<ConnectedUser> loggedInUsers = new ArrayList<ConnectedUser>();
private static LoginManager instance;
private LoginManager() {}
public static LoginManager getInstance() {
if(instance == null)
instance = new LoginManager();
return instance;
}
/**
* Logs user in
* @param user User to login
*/
public void logIn(ConnectedUser user) {
loggedInUsers.add(user);
}
/**
* Logs user out
* @param address User to logout
*/
public void logOut(InetSocketAddress address) {
for(ConnectedUser user : loggedInUsers.toArray(new ConnectedUser[loggedInUsers.size()]))
if(user.getSocketAddress().equals(address))
loggedInUsers.remove(user);
}
/**
* Get user object by socket
* @param address socket of the user
* @return User object, null if no user logged in from that address
*/
public ConnectedUser getUser(InetSocketAddress address) {
for(ConnectedUser user : loggedInUsers)
if(user.getSocketAddress().equals(address))
return user;
return null;
}
/**
* Check if user is logged in. It checks that both the socket adress and the user token corresponds to a logged in user.
* @param address User to check
* @return true if user is logged in, false otherwise
*/
public boolean isLoggedIn(InetSocketAddress address, String token) {
for(ConnectedUser user : loggedInUsers)
if(user.getSocketAddress().equals(address) && user.getToken().equals(token))
return true;
return false;
}
/**
* Check if an user is logged in from a given socket address
* @param address User to check
* @return true if user is logged in, false otherwise
*/
public boolean isSocketConnected(InetSocketAddress address) {
for(ConnectedUser user : loggedInUsers)
if(user.getSocketAddress().equals(address))
return true;
return false;
}
/**
* Retrieve the full logged-in user list
* @return list of logged in users
*/
public ArrayList<ConnectedUser> getLoggedInUsers() {
return loggedInUsers;
}
}