protected IdStrategy getIdStrategy() { return User.idStrategy(); }
public int compareTo(@Nonnull User that) { return idStrategy().compare(this.id, that.id); }
/** * Gets all the users. */ public static @Nonnull Collection<User> getAll() { final IdStrategy strategy = idStrategy(); ArrayList<User> users = new ArrayList<>(AllUsers.values()); users.sort((o1, o2) -> strategy.compare(o1.getId(), o2.getId())); return users; }
private static User get(String id) { return getInstance().byName.get(idStrategy().keyFor(id)); }
public @Nonnull String getUrl() { return "user/" + Util.rawEncode(idStrategy().keyFor(id)); }
public @Nonnull String getSearchUrl() { return "/user/" + Util.rawEncode(idStrategy().keyFor(id)); }
private static void remove(String id) { getInstance().byName.remove(idStrategy().keyFor(id)); }
private static File getUserFolderFor(String id){ return new File(getRootDir(), idStrategy().filenameOf(id)); } /**
private static void put(String id, User user) { getInstance().byName.putIfAbsent(idStrategy().keyFor(id), user); }
if (n != null && !idStrategy().equals(n, id)) { r.add(n);
@Initializer(after = InitMilestone.JOB_LOADED) public static void scanAll() { for (String userId : UserIdMapper.getInstance().getConvertedUserIds()) { User user = new User(userId, userId); getInstance().byName.putIfAbsent(idStrategy().keyFor(userId), user); } }
/** * true if {@link AbstractBuild#hasParticipant} or {@link hudson.model.Cause.UserIdCause} */ private boolean relatedTo(@Nonnull AbstractBuild<?, ?> b) { if (b.hasParticipant(this)) { return true; } for (Cause cause : b.getCauses()) { if (cause instanceof Cause.UserIdCause) { String userId = ((Cause.UserIdCause) cause).getUserId(); if (userId != null && idStrategy().equals(userId, getId())) { return true; } } } return false; }
@Override @Nonnull public ACL getACL() { ACL base = Jenkins.get().getAuthorizationStrategy().getACL(this); // always allow a non-anonymous user full control of himself. return ACL.lambda((a, permission) -> (idStrategy().equals(a.getName(), id) && !(a instanceof AnonymousAuthenticationToken)) || base.hasPermission(a, permission)); }
/** * With ADMINISTER permission, can delete users with persisted data but can't delete self. */ public boolean canDelete() { final IdStrategy strategy = idStrategy(); return hasPermission(Jenkins.ADMINISTER) && !strategy.equals(id, Jenkins.getAuthentication().getName()) && UserIdMapper.getInstance().isMapped(id); }
/** * Deletes the data directory and removes this user from Hudson. * * @throws IOException if we fail to delete. */ public void delete() throws IOException { String idKey = idStrategy().keyFor(id); File existingUserFolder = getExistingUserFolder(); UserIdMapper.getInstance().remove(id); AllUsers.remove(id); deleteExistingUserFolder(existingUserFolder); UserDetailsCache.get().invalidate(idKey); }
/** * Only for legacy token */ private boolean hasPermissionToSeeToken() { // Administrators can do whatever they want if (SHOW_LEGACY_TOKEN_TO_ADMINS && Jenkins.get().hasPermission(Jenkins.ADMINISTER)) { return true; } User current = User.current(); if (current == null) { // Anonymous return false; } // SYSTEM user is always eligible to see tokens if (Jenkins.getAuthentication() == ACL.SYSTEM) { return true; } return User.idStrategy().equals(user.getId(), current.getId()); }
/** * Deletes this user from Hudson. */ @RequirePOST public void doDoDelete(StaplerRequest req, StaplerResponse rsp) throws IOException { checkPermission(Jenkins.ADMINISTER); if (idStrategy().equals(id, Jenkins.getAuthentication().getName())) { rsp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Cannot delete self"); return; } delete(); rsp.sendRedirect2("../.."); }
@Restricted(NoExternalUse.class) public boolean hasCurrentUserRightToGenerateNewToken(User propertyOwner){ if (ADMIN_CAN_GENERATE_NEW_TOKENS && Jenkins.get().hasPermission(Jenkins.ADMINISTER)) { return true; } User currentUser = User.current(); if (currentUser == null) { // Anonymous return false; } if (Jenkins.getAuthentication() == ACL.SYSTEM) { // SYSTEM user is always eligible to see tokens return true; } return User.idStrategy().equals(propertyOwner.getId(), currentUser.getId()); }
@Override public boolean accept(File pathname) { return pathname.isDirectory() && new File(pathname, "config.xml").isFile() && idStrategy().equals( pathname.getName(), id); } });
public boolean hasPermission(Authentication a, Permission permission) { return (idStrategy().equals(a.getName(), id) && !(a instanceof AnonymousAuthenticationToken)) || base.hasPermission(a, permission); } };