Code with Finding: |
class SocialNetworkDatabaseBoards {
/** Returns whether the user is authorized to go to this board.
* Equivalent checking as in GetBoardList:
* For Admins: Must be within the "admin" list of the board
* For Users: Must be within the "RegionPrivileges" list of the board for some region
* Assumes the board already exists and is not 'freeforall' board
*/
public static Boolean authorizedGoToBoard(Connection conn, String username, String boardname) {
Statement stmt = null;
PreparedStatement pstmt = null;
ResultSet boards = null;
ResultSet privResult = null;
Boolean authorized = null;
try {
String getRegionPrivs, getRegionAdmins;
String role = DatabaseAdmin.getUserRole(conn, username);
if (role.equals("admin") || role.equals("sa")) { // an admin
getRegionAdmins = "SELECT * FROM main.boardadmins WHERE bname = ? AND username = ?";
pstmt = conn.prepareStatement(getRegionAdmins);
pstmt.setString(1, boardname);
pstmt.setString(2, username);
privResult = pstmt.executeQuery();
authorized = new Boolean(privResult.next());
privResult.close();
pstmt.close();
privResult = null;
pstmt = null;
}
else if (!role.equals("")) {
stmt = conn.createStatement();
getRegionPrivs = "SELECT privilege FROM "
+ boardname + ".regionprivileges WHERE username = ?";
pstmt = conn.prepareStatement(getRegionPrivs);
pstmt.setString(1, username);
privResult = pstmt.executeQuery();
authorized = new Boolean(privResult.next());
privResult.close();
pstmt.close();
privResult = null;
pstmt = null;
}
else { //there was an sql exception when getting the role.
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
DBManager.closeStatement(stmt);
DBManager.closePreparedStatement(pstmt);
DBManager.closeResultSet(boards);
}
return authorized;
}
}
class SocialNetworkDatabaseBoards {
public static ArrayList<String> getBoardAdmins(Connection conn, String board) {
if (board.equals("freeforall")) {
return null;
}
ArrayList<String> admins = new ArrayList<String>();
String query = "SELECT * FROM main.boardadmins WHERE bname = ?";
PreparedStatement pstmt = null;
ResultSet adminResults = null;
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, board);
adminResults = pstmt.executeQuery(query);
while (adminResults.next()) {
admins.add(adminResults.getString("username"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBManager.closePreparedStatement(pstmt);
DBManager.closeResultSet(adminResults);
}
return admins;
}
}
|