示例#1
0
 @Bean
 public UserDetailsService userDetailsService() {
   JdbcUserDetailsManager userDetailsService = new JdbcUserDetailsManager();
   userDetailsService.setDataSource(userDataSource);
   userDetailsService.setEnableGroups(true);
   return userDetailsService;
 }
  @RequestMapping(value = "/user", method = RequestMethod.PUT)
  @Transactional
  public ResponseEntity<Client> doIt(@RequestBody Client client, Authentication authentication) {

    List<String> errors = DomainValidator.checkForErrors(client);
    if (!errors.isEmpty()) {
      return new ResponseEntity<Client>(new Client(client, errors), HttpStatus.BAD_REQUEST);
    }
    HttpStatus status = null;

    List<GrantedAuthority> authorities = new ArrayList<>();
    authorities.add(new SimpleGrantedAuthority("USER"));

    if (ApplicationSecurity.isRoot(authentication)) {
      if (ApplicationSecurity.isRoot(client.getUsername())) {
        return new ResponseEntity<Client>(
            new Client(client, cannotChangeRootPassword), HttpStatus.BAD_REQUEST);
      }
      status = upsert(client, authorities);

    } else if (StringUtils.equals(client.getUsername(), authentication.getName())) {
      if (!userDetailsManager.userExists(client.getUsername())) {
        return new ResponseEntity<Client>(new Client(client, mustBeRoot), HttpStatus.BAD_REQUEST);
      }
      User user = new User(client.getUsername(), client.getPassword(), authorities);
      userDetailsManager.updateUser(user);
      status = HttpStatus.OK;

    } else {
      return new ResponseEntity<Client>(HttpStatus.FORBIDDEN);
    }

    return new ResponseEntity<Client>(new Client(client), status);
  }
  private HttpStatus upsert(Client client, List<GrantedAuthority> authorities) {
    HttpStatus status;

    User user = new User(client.getUsername(), client.getPassword(), authorities);
    if (userDetailsManager.userExists(client.getUsername())) {
      userDetailsManager.updateUser(user);
      status = HttpStatus.OK;
    } else {
      userDetailsManager.createUser(user);
      status = HttpStatus.CREATED;
    }
    return status;
  }
  /** JdbcUserDetailsManager 클래스 재정의 */
  @Override
  protected void initDao() throws ApplicationContextException {
    super.initDao();

    try {
      initMappingSqlQueries();
    } catch (Exception e) {
      LOGGER.error("EgovJdbcUserDetailsManager.initDao.Exception : {}", e.toString(), e);
    }
  }
 @Bean
 public JdbcUserDetailsManager jdbcUserDetailsManager() {
   JdbcUserDetailsManager jdbcUserDetailsManager = new JdbcUserDetailsManager();
   jdbcUserDetailsManager.setDataSource(configureDataSource);
   return jdbcUserDetailsManager;
 }
 @Bean
 public UserDetailsManager userDetailsManager() {
   JdbcUserDetailsManager userDetailsManager = new JdbcUserDetailsManager();
   userDetailsManager.setDataSource(dataSource);
   return userDetailsManager;
 }