Commit 2c83df65 authored by keita.onoguchi's avatar keita.onoguchi

ログイン機能追加

parent 921dcefa
...@@ -21,14 +21,14 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter{ ...@@ -21,14 +21,14 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter{
protected void configure(HttpSecurity http) throws Exception { protected void configure(HttpSecurity http) throws Exception {
http http
.authorizeRequests() .authorizeRequests()
.mvcMatchers("/signup", "/limited/login").permitAll() .mvcMatchers("/limited/login").permitAll()
.mvcMatchers("/limited/admin/**").hasRole("ADMIN") .mvcMatchers("/limited/admin/**").hasRole("ADMIN")
.anyRequest().authenticated() .anyRequest().authenticated()
.and() .and()
.formLogin() .formLogin()
.loginProcessingUrl("/login") .loginProcessingUrl("/login")
.loginPage("/limited/login") .loginPage("/limited/login")
.defaultSuccessUrl("/top") .defaultSuccessUrl("/limited/top", true)
.usernameParameter("email").passwordParameter("password") .usernameParameter("email").passwordParameter("password")
.and() .and()
.logout() .logout()
......
...@@ -2,7 +2,6 @@ package com.example.domain; ...@@ -2,7 +2,6 @@ package com.example.domain;
import java.sql.Date; import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
...@@ -10,38 +9,26 @@ import javax.persistence.Table; ...@@ -10,38 +9,26 @@ import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.Getter;
import lombok.Data; import lombok.Setter;
import lombok.NoArgsConstructor;
import lombok.ToString;
//ログイン用のエンティティークラス //ログイン用のエンティティークラス
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity @Entity
@Table(name="users") @Table(name="users")
@ToString(exclude = { "email", "password" }) @Getter
@Setter
public class User { public class User {
@Id @Id
@GeneratedValue @GeneratedValue
private int id; private int id;
@Column(nullable = false)
private String name; private String name;
@Column(nullable = false)
private String postalCode; private String postalCode;
@Column(nullable = false)
private String address; private String address;
@Column(nullable = false)
private String phoneNumber; private String phoneNumber;
@Column(nullable = false)
private String email; private String email;
@Column(nullable = false) @JsonIgnore
private String password; private String password;
@Column(nullable = false)
private String roles; private String roles;
@Column(nullable = false)
private Date createdAt; private Date createdAt;
@Column(nullable = false)
private Date updatedAt; private Date updatedAt;
} }
...@@ -4,6 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -4,6 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import com.example.domain.User; import com.example.domain.User;
public interface UserRepository extends JpaRepository<User, String>{ public interface UserRepository extends JpaRepository<User, Integer>{
User findByEmail(String email); User findByEmail(String email);
} }
package com.example.service; package com.example.service;
import java.util.Collection;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.authority.AuthorityUtils;
import com.example.domain.User; import com.example.domain.User;
//ユーザーの認証・認可にかかわるクラス //ユーザーの認証・認可にかかわるクラス
public class LoginUser extends org.springframework.security.core.userdetails.User{ public class LoginUser extends org.springframework.security.core.userdetails.User{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private User user; private final User user;
public LoginUser(User user){ public LoginUser(User user){
super(user.getEmail(), user.getPassword(), AuthorityUtils.createAuthorityList(user.getRoles())); super(user.getEmail(), user.getPassword(), AuthorityUtils.createAuthorityList(user.getRoles()));
this.user = user; this.user = user;
} }
/*public User getUser() { public User getUser() {
return user; return user;
}*/ }
/*static Set<GrantedAuthority> convertGrantedAuthorities(String roles){ private Collection<GrantedAuthority> getAuthorities(String role) {
if(roles == null || roles.isEmpty()){ if (role.equals("ADMIN")) {
return Collections.emptySet(); return AuthorityUtils.createAuthorityList("ROLE_ADMIN", "ROLE_GENERAL");
} else {
return AuthorityUtils.createAuthorityList("ROLE_GENERAL");
} }
Set<GrantedAuthority> authorities = Stream.of(roles.split(",")) }
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toSet());
return authorities;
}*/
} }
...@@ -55,11 +55,11 @@ ...@@ -55,11 +55,11 @@
<form id="login-form" method="post" th:action="@{/login}"> <form id="login-form" method="post" th:action="@{/login}">
<div id="email-form"> <div id="email-form">
<label for="login-email">Email</label> <label for="login-email">Email</label>
<input type="email" class="login" id="login-email" placeholder="Email" required="required"/> <input type="email" class="login" name="email" id="login-email" placeholder="Email" required="required"/>
</div> </div>
<div id="password-form"> <div id="password-form">
<label for="login-password">Password</label> <label for="login-password">Password</label>
<input type="password" class="login" id="login-password" placeholder="Password" required="required"/> <input type="password" class="login" name="password" id="login-password" placeholder="Password" required="required"/>
</div> </div>
<div id="submit-form"> <div id="submit-form">
<input type="submit" class="login" id="btn" value="Login"/> <input type="submit" class="login" id="btn" value="Login"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment