// Path: support/auth-server/src/main/java/com/xcompany/xproject/auth/server/model/User.java
// @Entity
// public class User implements Serializable {
// 	@Id
// 	@GeneratedValue(strategy = GenerationType.AUTO)
// 	private Integer id;
// 
// 	// @NotEmpty
// 	private String name;
// 
// 	@NotEmpty
// 	@Column(unique = true, nullable = false)
// 	private String login;
// 
// 	@NotEmpty
// 	private String password;
// 
// 	private String email;
// 
// 	@NotNull
// 	private int platform;
// 
// 
// 	@ManyToMany(fetch = FetchType.EAGER)
// //	@JoinTable(name = "user_role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") })
// 	@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
// 	private Collection<Role> roles;
// 
// 	// @ManyToMany(fetch = FetchType.EAGER)
// 	@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
// 	@JoinTable(name = "user_device", joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "device_id", referencedColumnName = "id") })
// 	private Collection<Device> devices;
// 
// 	private int authorized = 1;
// 
// 	public User() {
// 	}
// 
// 	public User(User user) {
// 		super();
// 		this.id = user.getId();
// 		this.name = user.getLogin();
// 		this.login = user.getLogin();
// 		this.password = user.getPassword();
//         this.email = user.getEmail();
// 		this.roles = user.getRoles();
// 		this.platform = user.getPlatform();
// 	}
// 
// 	public Integer getId() {
// 		return id;
// 	}
// 
// 	public void setId(Integer id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getLogin() {
// 		return login;
// 	}
// 
// 	public void setLogin(String login) {
// 		this.login = login;
// 	}
// 
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	public Collection<Role> getRoles() {
// 		return roles;
// 	}
// 
// 	public void setRoles(Collection<Role> roles) {
// 		this.roles = roles;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public int getPlatform() {
// 		return platform;
// 	}
// 
// 	public void setPlatform(Integer platform) {
// 		this.platform = platform;
// 	}
// 
// 	public Collection<Device> getDevices() {
// 		return devices;
// 	}
// 
// 	public void setDevices(Collection<Device> devices) {
// 		this.devices = devices;
// 	}
// 
// 	public int authorized() {
// 		return authorized;
// 	}
// 
// 	public void setAuthorized(int authorized) {
// 		this.authorized = authorized;
// 	}
// }
// 
// Path: support/auth-server/src/main/java/com/xcompany/xproject/auth/server/model/UserRepository.java
// public interface UserRepository extends CrudRepository<User, Integer> {
// 
// 	User findByLogin(String login);
// 
// 	User findByEmail(String login);
// 
// 
// 	// void deleteById(Integer );
// 
// 	@Modifying
// 	@Query("delete from User where id = ?1")
// 	void delete(Integer userId);
// 
// 	//@Modifying
// 	//void delete(User user);
// }


import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import com.xcompany.xproject.auth.server.model.User;
import com.xcompany.xproject.auth.server.model.UserRepository;
package com.xcompany.xproject.auth.server;




@Service
public class CustomUserDetailsService implements UserDetailsService {

	private final UserRepository userRepository;

	@Autowired
// Path: support/auth-server/src/main/java/com/xcompany/xproject/auth/server/model/User.java
// @Entity
// public class User implements Serializable {
// 	@Id
// 	@GeneratedValue(strategy = GenerationType.AUTO)
// 	private Integer id;
// 
// 	// @NotEmpty
// 	private String name;
// 
// 	@NotEmpty
// 	@Column(unique = true, nullable = false)
// 	private String login;
// 
// 	@NotEmpty
// 	private String password;
// 
// 	private String email;
// 
// 	@NotNull
// 	private int platform;
// 
// 
// 	@ManyToMany(fetch = FetchType.EAGER)
// //	@JoinTable(name = "user_role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") })
// 	@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
// 	private Collection<Role> roles;
// 
// 	// @ManyToMany(fetch = FetchType.EAGER)
// 	@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
// 	@JoinTable(name = "user_device", joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "device_id", referencedColumnName = "id") })
// 	private Collection<Device> devices;
// 
// 	private int authorized = 1;
// 
// 	public User() {
// 	}
// 
// 	public User(User user) {
// 		super();
// 		this.id = user.getId();
// 		this.name = user.getLogin();
// 		this.login = user.getLogin();
// 		this.password = user.getPassword();
//         this.email = user.getEmail();
// 		this.roles = user.getRoles();
// 		this.platform = user.getPlatform();
// 	}
// 
// 	public Integer getId() {
// 		return id;
// 	}
// 
// 	public void setId(Integer id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getLogin() {
// 		return login;
// 	}
// 
// 	public void setLogin(String login) {
// 		this.login = login;
// 	}
// 
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	public Collection<Role> getRoles() {
// 		return roles;
// 	}
// 
// 	public void setRoles(Collection<Role> roles) {
// 		this.roles = roles;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public int getPlatform() {
// 		return platform;
// 	}
// 
// 	public void setPlatform(Integer platform) {
// 		this.platform = platform;
// 	}
// 
// 	public Collection<Device> getDevices() {
// 		return devices;
// 	}
// 
// 	public void setDevices(Collection<Device> devices) {
// 		this.devices = devices;
// 	}
// 
// 	public int authorized() {
// 		return authorized;
// 	}
// 
// 	public void setAuthorized(int authorized) {
// 		this.authorized = authorized;
// 	}
// }
// 
// Path: support/auth-server/src/main/java/com/xcompany/xproject/auth/server/model/UserRepository.java
// public interface UserRepository extends CrudRepository<User, Integer> {
// 
// 	User findByLogin(String login);
// 
// 	User findByEmail(String login);
// 
// 
// 	// void deleteById(Integer );
// 
// 	@Modifying
// 	@Query("delete from User where id = ?1")
// 	void delete(Integer userId);
// 
// 	//@Modifying
// 	//void delete(User user);
// }


// Path: support/auth-server/src/main/java/com/xcompany/xproject/auth/server/CustomUserDetailsService.java
import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import com.xcompany.xproject.auth.server.model.User;
import com.xcompany.xproject.auth.server.model.UserRepository;

package com.xcompany.xproject.auth.server;




@Service
public class CustomUserDetailsService implements UserDetailsService {

	private final UserRepository userRepository;

	@Autowired
	public CustomUserDetailsService(UserRepository userRepository) {