Spring 일지 #37 (20210914) 화면 구현(정보 수정)
37. 정보 수정
-정보 수정
*update 권한 설정 추가(SecurityConfig.java)
// 권한 설정
http.authorizeRequests()
// 127.0.0.1:8080/ROOT/admin/login
.antMatchers("/admin", "/admin/*").hasAuthority("ADMIN")
// 127.0.0.1:8080/ROOT/seller/login <= ADMIN, SELLER
.antMatchers("/seller", "/seller/*", "/api/seller/*").hasAnyAuthority("ADMIN", "SELLER")
.antMatchers("/api/member/update")
.hasAnyAuthority("SELLER", "CUSTOMER").anyRequest().permitAll().and();
*member_update put 추가(ApiMemberController.java)
*비밀번호는 수정되면 안되므로 기존 값을 넣어 유지한다.
**@RequestBody 를 사용했으므로 포스트맨에서 확인할 때 json 을 사용한다.
// 127.0.0.1:8080/ROOT/api/member_update
// {"userid" : "aaa", 이름, 연락처} entity와 키를 맞춰줌
@RequestMapping(value = "/member_update", method = {
RequestMethod.PUT }, consumes = MediaType.ALL_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, Object> memberUpdate(@RequestBody Member member) {
Map<String, Object> map = new HashMap<>();
try {
Member member1 = mRepository.findById(member.getUserid()).get();
member.setUserpw(member1.getUserpw());
mRepository.save(member);
map.put("status", 200);
} catch (Exception e) {
e.printStackTrace();
map.put("status", 578);
}
return map;
}
*entity 수정(Member.java)
*userdate, userrole은 수정하지 않을 것이므로 update 되지 않도록 수정한다.
**updateable = false 를 하게 되면 이후 변경사항이 생겨도 수정이 불가능하게 되므로
이후에 변경 되어야 할 항목은 updateable = false를 하지 않고 controller에서 기존 값을 넣어주는 방식으로 한다.
... ...
@Column(name = "USERROLE", updatable = false)
private String userrole = null;
@CreationTimestamp
@Column(name = "USERDATE", updatable = false)
private Date userdate = null;
... ...
*정보 수정하기(포스트맨)
**정보 수정을 위해 먼저 member_select 을 통해 로그인 하여 토큰을 생성한다.