[[auth:intro|Intro]]
[[auth:ex1|Ex1]]
[[auth:ex2|Ex2]]
[[auth:ex3|Ex3]]
[[auth:ex4|Ex4]]====== Authentication: Enforce authenticated user ======
Extend your aspect to enforce an authenticated user when ''@Authenticated'' methods or constructors are executed.
To model the authentication, we will present the user with an input dialog where he/she can select the role. (This is of course a simplification: in production, we would of course have to prompt for login and password and verify these against a password database.)
The code to manage the current role for the user and to present the authentication dialog is shown here:
import javax.swing.JOptionPane;
import figures.annotations.Authenticated;
public aspect AccessControl {
...
Authenticated.Role role;
public void authenticate() {
role = (Authenticated.Role)
JOptionPane.showInputDialog(null,
"Select role", "Input",
JOptionPane.INFORMATION_MESSAGE, null,
Authenticated.Role.values(), role);
}
...
}
As long as the user is not authenticated, we keep presenting him the authentication dialog. In other words, the actual access control check can be as simple as:
while(role == null)
authenticate();
After implementing the aspect, run the figure editor. You should be presented with the authentication dialog upon drawing the first point. Afterwards, new points can be added without interruption.
----
Continue with [[auth:ex3|Exercise 3]].