

User 클래스의 생성자가 AuthUser의 authorities 필드 타입과 일치하지 않기 때문이다. 아래 사진과 같이 authUser.getAuthorities()는 Collection<? extends GrantedAuthority> 타입을 반환하지만, User 클래스의 생성자가 이 타입을 수용할 수 있도록 정의되지 않은 경우 오류가 발생할 수 있다.
authUser.getAuthorities()로부터 권한 목록을 가져와서 스트림의 첫 번째 권한을 Optional로 가져온다. 
하지만, 위와 같이 작성 할 때 .get()은 Optional의 값을 가져오는 메서드인데, 값이 없는 경우 예외가 발생할 수 있다.
튜터님께서 이부분을 핸들링하여 안전하게 처리하는 것이 좋다고 조언해 주셔서 수정해보았다!


사용자의 권한 목록에서 첫 번째 권한을 Optional로 가져온 후, Optional 값이 존재할 때, UserRole.of()를 사용해 GrantedAuthority를 UserRole로 변환한다. Optional 값이 비어 있을 경우, 기본값으로 UserRole.ROLE_USER를 사용한다.
UserRole.of 메서드는 문자열을 받아서 해당하는 UserRole 열거형을 찾고, 찾지 못하면 예외를 발생시키는 역할을 한다.이렇게 하면 권한이 없거나 설정되지 않은 경우에도 안전하게 기본 역할을 지정할 수 있다!!