Class UserIdentityManager

  • All Implemented Interfaces:
    PreferenceChangedListener

    public final class UserIdentityManager
    extends java.lang.Object
    implements PreferenceChangedListener
    UserIdentityManager is a global object which keeps track of what JOSM knows about the identity of the current user. JOSM can be operated anonymously provided the current user never invokes an operation on the OSM server which required authentication. In this case JOSM neither knows the user name of the OSM account of the current user nor its unique id. Perhaps the user doesn't have one. If the current user supplies a user name and a password in the JOSM preferences JOSM can partially identify the user. The current user is fully identified if JOSM knows both the user name and the unique id of the users OSM account. The latter is retrieved from the OSM server with a GET /api/0.6/user/details request, submitted with the user name and password of the current user. The global UserIdentityManager listens to PreferenceChangeEvents and keeps track of what the current JOSM instance knows about the current user. Other subsystems can let the global UserIdentityManager know in case they fully identify the current user, see setFullyIdentified(java.lang.String, org.openstreetmap.josm.data.osm.UserInfo). The information kept by the UserIdentityManager can be used to
    • safely query changesets owned by the current user based on its user id, not on its user name
    • safely search for objects last touched by the current user based on its user id, not on its user name
    Since:
    12743 (renamed from org.openstreetmap.josm.gui.JosmUserIdentityManager), 2689 (creation)
    • Method Detail

      • getInstance

        public static UserIdentityManager getInstance()
        Replies the unique instance of the JOSM user identity manager
        Returns:
        the unique instance of the JOSM user identity manager
      • setAnonymous

        public void setAnonymous()
        Remembers the fact that the current JOSM user is anonymous.
      • setPartiallyIdentified

        public void setPartiallyIdentified​(java.lang.String userName)
        Remembers the fact that the current JOSM user is partially identified by the user name of its OSM account.
        Parameters:
        userName - the user name. Must not be null. Must not be empty (whitespace only).
        Throws:
        java.lang.IllegalArgumentException - if userName is null
        java.lang.IllegalArgumentException - if userName is empty
      • setFullyIdentified

        public void setFullyIdentified​(java.lang.String userName,
                                       UserInfo userInfo)
        Remembers the fact that the current JOSM user is fully identified with a verified pair of user name and user id.
        Parameters:
        userName - the user name. Must not be null. Must not be empty.
        userInfo - additional information about the user, retrieved from the OSM server and including the user id
        Throws:
        java.lang.IllegalArgumentException - if userName is null
        java.lang.IllegalArgumentException - if userName is empty
        java.lang.IllegalArgumentException - if userInfo is null
      • isAnonymous

        public boolean isAnonymous()
        Replies true if the current JOSM user is anonymous.
        Returns:
        true if the current user is anonymous.
      • isPartiallyIdentified

        public boolean isPartiallyIdentified()
        Replies true if the current JOSM user is partially identified.
        Returns:
        true if the current JOSM user is partially identified.
      • isFullyIdentified

        public boolean isFullyIdentified()
        Replies true if the current JOSM user is fully identified.
        Returns:
        true if the current JOSM user is fully identified.
      • getUserName

        public java.lang.String getUserName()
        Replies the user name of the current JOSM user. null, if isAnonymous() is true.
        Returns:
        the user name of the current JOSM user
      • getUserInfo

        public UserInfo getUserInfo()
        Replies verified additional information about the current user if the user is isFullyIdentified().
        Returns:
        verified additional information about the current user
      • initFromPreferences

        public void initFromPreferences()
        Initializes the user identity manager from Basic Authentication values in the Preferences This method should be called if osm-server.auth-method is set to basic.
        See Also:
        initFromOAuth()
      • initFromOAuth

        public void initFromOAuth()
        Initializes the user identity manager from OAuth request of user details. This method should be called if osm-server.auth-method is set to oauth.
        Since:
        5434
        See Also:
        initFromPreferences()
      • isCurrentUser

        public boolean isCurrentUser​(java.lang.String userName)
        Replies true if the user with name username is the current user
        Parameters:
        userName - the user name
        Returns:
        true if the user with name username is the current user