Added admin actions.
This commit is contained in:
parent
d5546a5320
commit
84709cc0d4
|
@ -1,8 +1,11 @@
|
||||||
package nl.andrewlalis.erme;
|
package nl.andrewlalis.erme;
|
||||||
|
|
||||||
import com.formdev.flatlaf.FlatLightLaf;
|
import com.formdev.flatlaf.FlatLightLaf;
|
||||||
|
import nl.andrewlalis.erme.util.Hash;
|
||||||
import nl.andrewlalis.erme.view.EditorFrame;
|
import nl.andrewlalis.erme.view.EditorFrame;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
public class EntityRelationMappingEditor {
|
public class EntityRelationMappingEditor {
|
||||||
public static final String VERSION = "1.2.0";
|
public static final String VERSION = "1.2.0";
|
||||||
|
|
||||||
|
@ -10,7 +13,19 @@ public class EntityRelationMappingEditor {
|
||||||
if (!FlatLightLaf.install()) {
|
if (!FlatLightLaf.install()) {
|
||||||
System.err.println("Could not install FlatLight Look and Feel.");
|
System.err.println("Could not install FlatLight Look and Feel.");
|
||||||
}
|
}
|
||||||
final EditorFrame frame = new EditorFrame();
|
final boolean includeAdminActions = shouldIncludeAdminActions(args);
|
||||||
|
if (includeAdminActions) {
|
||||||
|
System.out.println("Admin actions have been enabled.");
|
||||||
|
}
|
||||||
|
final EditorFrame frame = new EditorFrame(includeAdminActions);
|
||||||
frame.setVisible(true);
|
frame.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean shouldIncludeAdminActions(String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
byte[] pw = args[0].getBytes(StandardCharsets.UTF_8);
|
||||||
|
return Hash.matches(pw, "admin_hash.txt");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
package nl.andrewlalis.erme.util;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class Hash {
|
||||||
|
public static boolean matches(byte[] password, String resourceFile) {
|
||||||
|
MessageDigest md;
|
||||||
|
try {
|
||||||
|
md = MessageDigest.getInstance("SHA-256");
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
byte[] passwordHash = md.digest(password);
|
||||||
|
InputStream is = Hash.class.getClassLoader().getResourceAsStream(resourceFile);
|
||||||
|
if (is == null) {
|
||||||
|
System.err.println("Could not obtain input stream to admin_hash.txt");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
char[] buffer = new char[64];
|
||||||
|
try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
|
||||||
|
if (br.read(buffer) != buffer.length) {
|
||||||
|
System.err.println("Incorrect number of characters read from hash file.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String hashHex = String.valueOf(buffer);
|
||||||
|
byte[] hash = hexStringToByteArray(hashHex);
|
||||||
|
return Arrays.equals(passwordHash, hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] hexStringToByteArray(String s) {
|
||||||
|
int len = s.length();
|
||||||
|
byte[] data = new byte[len / 2];
|
||||||
|
for (int i = 0; i < len; i += 2) {
|
||||||
|
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
|
||||||
|
+ Character.digit(s.charAt(i+1), 16));
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,10 +9,10 @@ import java.awt.*;
|
||||||
* The main JFrame for the editor.
|
* The main JFrame for the editor.
|
||||||
*/
|
*/
|
||||||
public class EditorFrame extends JFrame {
|
public class EditorFrame extends JFrame {
|
||||||
public EditorFrame() {
|
public EditorFrame(boolean includeAdminActions) {
|
||||||
super("ER-Mapping Editor");
|
super("ER-Mapping Editor");
|
||||||
this.setContentPane(new DiagramPanel(new MappingModel()));
|
this.setContentPane(new DiagramPanel(new MappingModel()));
|
||||||
this.setJMenuBar(new EditorMenuBar());
|
this.setJMenuBar(new EditorMenuBar(includeAdminActions));
|
||||||
this.setMinimumSize(new Dimension(400, 400));
|
this.setMinimumSize(new Dimension(400, 400));
|
||||||
this.setPreferredSize(new Dimension(800, 800));
|
this.setPreferredSize(new Dimension(800, 800));
|
||||||
this.pack();
|
this.pack();
|
||||||
|
|
|
@ -12,7 +12,7 @@ import javax.swing.*;
|
||||||
* The menu bar that's visible atop the application.
|
* The menu bar that's visible atop the application.
|
||||||
*/
|
*/
|
||||||
public class EditorMenuBar extends JMenuBar {
|
public class EditorMenuBar extends JMenuBar {
|
||||||
public EditorMenuBar() {
|
public EditorMenuBar(boolean includeAdminActions) {
|
||||||
this.add(this.buildFileMenu());
|
this.add(this.buildFileMenu());
|
||||||
this.add(this.buildEditMenu());
|
this.add(this.buildEditMenu());
|
||||||
this.add(this.buildHelpMenu());
|
this.add(this.buildHelpMenu());
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
cfdabe75d984e5a92fb491dadc9091419d9587c049246356a488e83a75505bce
|
Loading…
Reference in New Issue