mirror of
https://github.com/mbierlee/poodinis.git
synced 2024-11-15 12:14:01 +01:00
44 lines
1,023 B
D
44 lines
1,023 B
D
|
import poodinis;
|
||
|
|
||
|
import std.random;
|
||
|
import std.digest.md;
|
||
|
import std.stdio;
|
||
|
import std.conv;
|
||
|
|
||
|
class SuperSecurityDevice {
|
||
|
private int seed;
|
||
|
|
||
|
public this() {
|
||
|
auto randomGenerator = Random(unpredictableSeed);
|
||
|
seed = uniform(0, 999, randomGenerator);
|
||
|
}
|
||
|
|
||
|
public string getPassword() {
|
||
|
return to!string(seed) ~ "t1m3sp13!!:";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class SecurityManager {
|
||
|
@Autowire
|
||
|
public SuperSecurityDevice levelOneSecurity;
|
||
|
|
||
|
@Autowire
|
||
|
@AssignNewInstance
|
||
|
public SuperSecurityDevice levelTwoSecurity;
|
||
|
}
|
||
|
|
||
|
void main() {
|
||
|
auto dependencies = DependencyContainer.getInstance();
|
||
|
dependencies.register!SuperSecurityDevice; // Registered with the default "Single instance" scope
|
||
|
dependencies.register!SecurityManager;
|
||
|
|
||
|
auto manager = dependencies.resolve!SecurityManager;
|
||
|
|
||
|
writeln("Password for user one: " ~ manager.levelOneSecurity.getPassword());
|
||
|
writeln("Password for user two: " ~ manager.levelTwoSecurity.getPassword());
|
||
|
|
||
|
if (manager.levelOneSecurity is manager.levelTwoSecurity) {
|
||
|
writeln("SECURITY BREACH!!!!!");
|
||
|
}
|
||
|
}
|