/** * This file is part of git-as-svn. It is subject to the license terms * in the LICENSE file found in the top-level directory of this distribution * and at http://www.gnu.org/licenses/gpl-2.0.html. No part of git-as-svn, * including this file, may be copied, modified, propagated, or distributed * except according to the terms contained in the LICENSE file. */ package svnserver.auth; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.tmatesoft.svn.core.SVNException; import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; /** * Simple user db with clear-text passwords. * * @author Marat Radchenko <marat@slonopotamus.org> */ public final class LocalUserDB implements UserDB { @NotNull private final Map<String, UserWithPassword> users = new HashMap<>(); @NotNull private final Collection<Authenticator> authenticators = Collections.singleton(new CramMD5Authenticator(users::get)); public LocalUserDB() { } public void add(@NotNull UserWithPassword userWithPassword) { users.put(userWithPassword.getUser().getUserName(), userWithPassword); } @NotNull @Override public Collection<Authenticator> authenticators() { return authenticators; } @Nullable @Override public User check(@NotNull String userName, @NotNull String password) { final UserWithPassword userWithPassword = users.get(userName); if (userWithPassword == null) return null; if (!userWithPassword.getPassword().equals(password)) return null; return userWithPassword.getUser(); } @Nullable @Override public User lookupByUserName(@NotNull String userName) throws SVNException, IOException { final UserWithPassword user = users.get(userName); return user == null ? null : user.getUser(); } @Nullable @Override public User lookupByExternal(@NotNull String external) throws SVNException, IOException { return null; } }