public Response<String> apply(IdentifiedUser user, String newPassword) throws ResourceNotFoundException, ResourceConflictException, OrmException { if (user.getUserName() == null) { throw new ResourceConflictException("username must be set"); } AccountExternalId id = dbProvider .get() .accountExternalIds() .get(new AccountExternalId.Key(SCHEME_USERNAME, user.getUserName())); if (id == null) { throw new ResourceNotFoundException(); } id.setPassword(newPassword); dbProvider.get().accountExternalIds().update(Collections.singleton(id)); accountCache.evict(user.getAccountId()); return Strings.isNullOrEmpty(newPassword) ? Response.<String>none() : Response.ok(newPassword); }
String getMessage() { StringBuilder msg = new StringBuilder(); msg.append("\r\n"); msg.append(" **** Welcome to Gerrit Code Review ****\r\n"); msg.append("\r\n"); Account account = user.getAccount(); String name = account.getFullName(); if (name == null || name.isEmpty()) { name = user.getUserName(); } msg.append(" Hi "); msg.append(name); msg.append(", you have successfully connected over SSH."); msg.append("\r\n"); msg.append("\r\n"); msg.append(" Unfortunately, interactive shells are disabled.\r\n"); msg.append(" To clone a hosted Git repository, use:\r\n"); msg.append("\r\n"); if (!sshInfo.getHostKeys().isEmpty()) { String host = sshInfo.getHostKeys().get(0).getHost(); if (host.startsWith("*:")) { host = getGerritHost() + host.substring(1); } msg.append(" git clone ssh://"); msg.append(user.getUserName()); msg.append("@"); msg.append(host); msg.append("/"); msg.append("REPOSITORY_NAME.git"); msg.append("\r\n"); } msg.append("\r\n"); return msg.toString(); }
private String[] makeEnv(final HttpServletRequest req, final ProjectControl project) { final EnvList env = new EnvList(_env); final int contentLength = Math.max(0, req.getContentLength()); // These ones are from "The WWW Common Gateway Interface Version 1.1" // env.set("AUTH_TYPE", req.getAuthType()); env.set("CONTENT_LENGTH", Integer.toString(contentLength)); env.set("CONTENT_TYPE", req.getContentType()); env.set("GATEWAY_INTERFACE", "CGI/1.1"); env.set("PATH_INFO", req.getPathInfo()); env.set("PATH_TRANSLATED", null); env.set("QUERY_STRING", req.getQueryString()); env.set("REMOTE_ADDR", req.getRemoteAddr()); env.set("REMOTE_HOST", req.getRemoteHost()); env.set("HTTPS", req.isSecure() ? "ON" : "OFF"); // The identity information reported about the connection by a // RFC 1413 [11] request to the remote agent, if // available. Servers MAY choose not to support this feature, or // not to request the data for efficiency reasons. // "REMOTE_IDENT" => "NYI" // env.set("REQUEST_METHOD", req.getMethod()); env.set("SCRIPT_NAME", req.getContextPath() + req.getServletPath()); env.set("SCRIPT_FILENAME", gitwebCgi.toAbsolutePath().toString()); env.set("SERVER_NAME", req.getServerName()); env.set("SERVER_PORT", Integer.toString(req.getServerPort())); env.set("SERVER_PROTOCOL", req.getProtocol()); env.set("SERVER_SOFTWARE", getServletContext().getServerInfo()); final Enumeration<String> hdrs = enumerateHeaderNames(req); while (hdrs.hasMoreElements()) { final String name = hdrs.nextElement(); final String value = req.getHeader(name); env.set("HTTP_" + name.toUpperCase().replace('-', '_'), value); } env.set("GERRIT_CONTEXT_PATH", req.getContextPath() + "/"); env.set("GERRIT_PROJECT_NAME", project.getProject().getName()); if (project.forUser(anonymousUserProvider.get()).isVisible()) { env.set("GERRIT_ANONYMOUS_READ", "1"); } String remoteUser = null; if (project.getCurrentUser().isIdentifiedUser()) { final IdentifiedUser u = (IdentifiedUser) project.getCurrentUser(); final String user = u.getUserName(); env.set("GERRIT_USER_NAME", user); if (user != null && !user.isEmpty()) { remoteUser = user; } else { remoteUser = "******" + u.getAccountId(); } } env.set("REMOTE_USER", remoteUser); // Override CGI settings using alternative URI provided by gitweb.url. // This is required to trick gitweb into thinking that it's served under // different URL. Setting just $my_uri on the perl's side isn't enough, // because few actions (atom, blobdiff_plain, commitdiff_plain) rely on // URL returned by $cgi->self_url(). // if (gitwebUrl != null) { int schemePort = -1; if (gitwebUrl.getScheme() != null) { if (gitwebUrl.getScheme().equals("http")) { env.set("HTTPS", "OFF"); schemePort = 80; } else { env.set("HTTPS", "ON"); schemePort = 443; } } if (gitwebUrl.getHost() != null) { env.set("SERVER_NAME", gitwebUrl.getHost()); env.set("HTTP_HOST", gitwebUrl.getHost()); } if (gitwebUrl.getPort() != -1) { env.set("SERVER_PORT", Integer.toString(gitwebUrl.getPort())); } else if (schemePort != -1) { env.set("SERVER_PORT", Integer.toString(schemePort)); } if (gitwebUrl.getPath() != null) { env.set("SCRIPT_NAME", gitwebUrl.getPath().isEmpty() ? "/" : gitwebUrl.getPath()); } } return env.getEnvArray(); }