diff --git a/design-pattern/gof/src/adapter/after/Account.java b/design-pattern/gof/src/adapter/after/Account.java new file mode 100644 index 00000000..e5bf464c --- /dev/null +++ b/design-pattern/gof/src/adapter/after/Account.java @@ -0,0 +1,42 @@ +package adapter.after; + +import adapter.after.security.UserDetails; + +public class Account implements UserDetails { + + private String name; + + private String password; + + private String email; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getUsername() { + return this.name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + +} diff --git a/design-pattern/gof/src/adapter/after/AccountService.java b/design-pattern/gof/src/adapter/after/AccountService.java new file mode 100644 index 00000000..e09e5e48 --- /dev/null +++ b/design-pattern/gof/src/adapter/after/AccountService.java @@ -0,0 +1,28 @@ +package adapter.after; + +import adapter.after.security.UserDetails; +import adapter.after.security.UserDetailsService; + +public class AccountService implements UserDetailsService { + + public Account findAccountByUsername(String username) { + Account account = new Account(); + account.setName(username); + account.setPassword(username); + account.setEmail(username); + return account; + } + + public void createNewAccount(Account account) { + + } + + public void updateAccount(Account account) { + + } + + @Override + public UserDetails loadUser(String username) { + return findAccountByUsername(username); + } +} diff --git a/design-pattern/gof/src/adapter/after/AccountUserDetails.java b/design-pattern/gof/src/adapter/after/AccountUserDetails.java new file mode 100644 index 00000000..00c675b0 --- /dev/null +++ b/design-pattern/gof/src/adapter/after/AccountUserDetails.java @@ -0,0 +1,22 @@ +package adapter.after; + +import adapter.after.security.UserDetails; + +public class AccountUserDetails implements UserDetails { + + private Account account; + + public AccountUserDetails(Account account) { + this.account = account; + } + + @Override + public String getUsername() { + return this.account.getName(); + } + + @Override + public String getPassword() { + return this.account.getPassword(); + } +} diff --git a/design-pattern/gof/src/adapter/after/AccountUserDetailsService.java b/design-pattern/gof/src/adapter/after/AccountUserDetailsService.java new file mode 100644 index 00000000..ec3c3666 --- /dev/null +++ b/design-pattern/gof/src/adapter/after/AccountUserDetailsService.java @@ -0,0 +1,19 @@ +package adapter.after; + +import adapter.after.security.UserDetails; +import adapter.after.security.UserDetailsService; + +public class AccountUserDetailsService implements UserDetailsService { + + AccountService accountService; + + public AccountUserDetailsService(AccountService accountService) { + this.accountService = accountService; + } + + @Override + public UserDetails loadUser(String username) { + Account account = accountService.findAccountByUsername(username); + return new AccountUserDetails(account); + } +} diff --git a/design-pattern/gof/src/adapter/after/App.java b/design-pattern/gof/src/adapter/after/App.java new file mode 100644 index 00000000..4f2dad96 --- /dev/null +++ b/design-pattern/gof/src/adapter/after/App.java @@ -0,0 +1,21 @@ +package adapter.after; + +import adapter.after.security.LoginHandler; +import adapter.after.security.UserDetailsService; + +public class App { + + public static void main(String[] args) { + // 클래스 따로 생성 +// AccountService accountService = new AccountService(); +// UserDetailsService userDetailsService = new AccountUserDetailsService(accountService); +// LoginHandler loginHandler = new LoginHandler(userDetailsService); +// String login = loginHandler.login("kim", "kim"); +// System.out.println("login = " + login); + + UserDetailsService userDetailsService = new AccountService(); + LoginHandler loginHandler = new LoginHandler(userDetailsService); + String login = loginHandler.login("kim", "kim"); + System.out.println("login = " + login); + } +} diff --git a/design-pattern/gof/src/adapter/after/security/LoginHandler.java b/design-pattern/gof/src/adapter/after/security/LoginHandler.java new file mode 100644 index 00000000..1c8f127d --- /dev/null +++ b/design-pattern/gof/src/adapter/after/security/LoginHandler.java @@ -0,0 +1,19 @@ +package adapter.after.security; + +public class LoginHandler { + + UserDetailsService userDetailsService; + + public LoginHandler(UserDetailsService userDetailsService) { + this.userDetailsService = userDetailsService; + } + + public String login(String username, String password) { + UserDetails userDetails = userDetailsService.loadUser(username); + if (userDetails.getPassword().equals(password)) { + return userDetails.getUsername(); + } else { + throw new IllegalArgumentException(); + } + } +} diff --git a/design-pattern/gof/src/adapter/after/security/UserDetails.java b/design-pattern/gof/src/adapter/after/security/UserDetails.java new file mode 100644 index 00000000..06f0b416 --- /dev/null +++ b/design-pattern/gof/src/adapter/after/security/UserDetails.java @@ -0,0 +1,9 @@ +package adapter.after.security; + +public interface UserDetails { + + String getUsername(); + + String getPassword(); + +} diff --git a/design-pattern/gof/src/adapter/after/security/UserDetailsService.java b/design-pattern/gof/src/adapter/after/security/UserDetailsService.java new file mode 100644 index 00000000..b200919b --- /dev/null +++ b/design-pattern/gof/src/adapter/after/security/UserDetailsService.java @@ -0,0 +1,7 @@ +package adapter.after.security; + +public interface UserDetailsService { + + UserDetails loadUser(String username); + +} diff --git a/design-pattern/gof/src/adapter/before/Account.java b/design-pattern/gof/src/adapter/before/Account.java new file mode 100644 index 00000000..d8d451c4 --- /dev/null +++ b/design-pattern/gof/src/adapter/before/Account.java @@ -0,0 +1,35 @@ +package adapter.before; + +public class Account { + + private String name; + + private String password; + + private String email; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + +} diff --git a/design-pattern/gof/src/adapter/before/AccountService.java b/design-pattern/gof/src/adapter/before/AccountService.java new file mode 100644 index 00000000..173f94c0 --- /dev/null +++ b/design-pattern/gof/src/adapter/before/AccountService.java @@ -0,0 +1,21 @@ +package adapter.before; + +public class AccountService { + + public Account findAccountByUsername(String username) { + Account account = new Account(); + account.setName(username); + account.setPassword(username); + account.setEmail(username); + return account; + } + + public void createNewAccount(Account account) { + + } + + public void updateAccount(Account account) { + + } + +} diff --git a/design-pattern/gof/src/adapter/before/security/LoginHandler.java b/design-pattern/gof/src/adapter/before/security/LoginHandler.java new file mode 100644 index 00000000..5ee771c2 --- /dev/null +++ b/design-pattern/gof/src/adapter/before/security/LoginHandler.java @@ -0,0 +1,19 @@ +package adapter.before.security; + +public class LoginHandler { + + UserDetailsService userDetailsService; + + public LoginHandler(UserDetailsService userDetailsService) { + this.userDetailsService = userDetailsService; + } + + public String login(String username, String password) { + UserDetails userDetails = userDetailsService.loadUser(username); + if (userDetails.getPassword().equals(password)) { + return userDetails.getUsername(); + } else { + throw new IllegalArgumentException(); + } + } +} diff --git a/design-pattern/gof/src/adapter/before/security/UserDetails.java b/design-pattern/gof/src/adapter/before/security/UserDetails.java new file mode 100644 index 00000000..0d99e9ee --- /dev/null +++ b/design-pattern/gof/src/adapter/before/security/UserDetails.java @@ -0,0 +1,9 @@ +package adapter.before.security; + +public interface UserDetails { + + String getUsername(); + + String getPassword(); + +} diff --git a/design-pattern/gof/src/adapter/before/security/UserDetailsService.java b/design-pattern/gof/src/adapter/before/security/UserDetailsService.java new file mode 100644 index 00000000..c13feb90 --- /dev/null +++ b/design-pattern/gof/src/adapter/before/security/UserDetailsService.java @@ -0,0 +1,7 @@ +package adapter.before.security; + +public interface UserDetailsService { + + UserDetails loadUser(String username); + +}