UserManager as role coordinator
[controller.git] / opendaylight / usermanager / src / main / java / org / opendaylight / controller / usermanager / IUserManager.java
index aac5aba3535f2fcd67bfcceb41db56240cb1acb3..85a97f0b852e99fa728ab4366e69e8dda775dd93 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
  *
@@ -36,89 +35,123 @@ public interface IUserManager extends UserDetailsService {
     public List<String> getUserRoles(String userName);
 
     /**
-     * Authenticate user with AAA server and return authentication and authorization info
+     * Authenticate user with AAA server and return authentication and
+     * authorization info
      *
-     * @param username the username
-     * @param password the password
-     * @return                 {@link org.opendaylight.controller.sal.authorization.AuthResultEnum authenticate result}
+     * @param username
+     *            the username
+     * @param password
+     *            the password
+     * @return {@link org.opendaylight.controller.sal.authorization.AuthResultEnum}
+     *         authentication result
      */
     public AuthResultEnum authenticate(String username, String password);
 
     /**
      * Add/remove AAA server
      *
-     * @param configObject     refer to {@link org.opendaylight.controller.usermanager.internal.ServerConfig ServerConfig}
-     * @return                         status code
+     * @param configObject
+     *            {@link org.opendaylight.controller.usermanager.internal.ServerConfig}
+     *            Server Configuration
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status addAAAServer(ServerConfig configObject);
 
     /**
      * Remove AAA server
      *
-     * @param configObject     refer to {@link org.opendaylight.controller.usermanager.internal.ServerConfig ServerConfig}
-     * @return                         status code
+     * @param configObject
+     *            refer to
+     *            {@link org.opendaylight.controller.usermanager.internal.ServerConfig}
+     *            Server Configuration
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status removeAAAServer(ServerConfig configObject);
 
     /**
      * Add a local user
      *
-     * @param configObject refer to {@link org.opendaylight.controller.usermanager.internal.UserConfig UserConfig}
-     * @return                         status code
+     * @param configObject
+     *            {@link org.opendaylight.controller.usermanager.internal.UserConfig}
+     *            User Configuration
+     * @return refer to {@link org.opendaylight.controller.sal.utils.Status}
+     *         status code
      */
     public Status addLocalUser(UserConfig configObject);
 
     /**
      * Remove a local user
      *
-     * @param configObject refer to {@link org.opendaylight.controller.usermanager.internal.UserConfig UserConfig}
-     * @return                         status code
+     * @param configObject
+     *            {@link org.opendaylight.controller.usermanager.internal.UserConfig}
+     *            UserConfig
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status removeLocalUser(UserConfig configObject);
-    
+
     /**
      * Remove a local user
-     * 
-     * @param userName the user name
-     * @return the status of this action
+     *
+     * @param userName
+     *            the user name
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status removeLocalUser(String userName);
 
     /**
-     * Add the authorization information for a user that gets authenticated remotely
+     * Add the authorization information for a user that gets authenticated
+     * remotely
      *
      * @param AAAconf
-     * @return
+     *            {@link org.opendaylight.controller.usermanager.internal.AuthorizationConfig}
+     *            Authorization Resources
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status addAuthInfo(AuthorizationConfig AAAconf);
 
     /**
-     * Remove the authorization information for a user that gets authenticated remotely
+     * Remove the authorization information for a user that gets authenticated
+     * remotely
      *
      * @param AAAconf
-     * @return
+     *            {@link org.opendaylight.controller.usermanager.internal.AuthorizationConfig}
+     *            Authorization Resource
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status removeAuthInfo(AuthorizationConfig AAAconf);
 
     /**
      * Return the list of authorization resources
-     * @return
+     *
+     * @return {@link org.opendaylight.controller.usermanager.internal.AuthorizationConfig}
+     *         List of Authorization Resource
      */
     public List<AuthorizationConfig> getAuthorizationList();
 
     /**
      * Returns a list of AAA Providers.
+     *
      * @return Set of provider names.
      */
     public Set<String> getAAAProviderNames();
 
     /**
-     * Change the current password for a configured user
+     * Change the current password for a locally configured user
      *
      * @param user
+     *            the username
      * @param curPasssword
+     *            the current password
      * @param newPassword
-     * @return
+     *            the new password
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status changeLocalUserPassword(String user, String curPassword,
             String newPassword);
@@ -126,49 +159,56 @@ public interface IUserManager extends UserDetailsService {
     /**
      * Return a list of AAA servers currently configured
      *
-     * @return list of {@link org.opendaylight.controller.usermanager.internal.ServerConfig ServerConfig}
+     * @return {@link org.opendaylight.controller.usermanager.internal.ServerConfig}
+     *         List of ServerConfig
      */
     public List<ServerConfig> getAAAServerList();
 
     /**
      * Return a list of local users
      *
-     * @return list of {@link org.opendaylight.controller.usermanager.internal.UserConfig UserConfig}
+     * @return {@link org.opendaylight.controller.usermanager.internal.UserConfig}
+     *         List of UserConfig
      */
     public List<UserConfig> getLocalUserList();
 
     /**
-     * Save the local users to local disk
+     * Save the local users to disk
      *
-     * @return status code
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status saveLocalUserList();
 
     /**
-     * Save the AAA server configurations to local disk
+     * Save the AAA server configurations to disk
      *
-     * @return status code
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status of this action
      */
     public Status saveAAAServerList();
 
     /**
-     * Save the Authorization configurations to local disk
+     * Save the Authorization configurations to disk
      *
-     * @return status code
+     * @return {@link org.opendaylight.controller.sal.utils.Status}
+     *         status code
      */
     public Status saveAuthorizationList();
 
     /**
      * Remove user profile when user logs out
      *
-     * @param username the user name
+     * @param username
+     *            the user name
      */
     public void userLogout(String username);
 
     /**
      * Remove user profile when user times out
      *
-     * @param username the user name
+     * @param username
+     *            the user name
      */
     public void userTimedOut(String username);
 
@@ -188,21 +228,64 @@ public interface IUserManager extends UserDetailsService {
     public String getAccessDate(String user);
 
     /**
-     * Returns the user level for the passed user name
-     * It check the roles assigned to this user and checks
-     * against the well known Controller user roles to
-     * determines the highest user level associated with
-     * the user
+     * Returns the highest user level for the passed user name. It checks the roles
+     * assigned to this user and checks against the well known Controller user
+     * roles to determines the highest user level associated with the user
      *
-     * @param userName the user name
-     * @return the highest user level for this user
+     * @param userName
+     *            the user name
+     * @return {@link org.opendaylight.controller.sal.authorization.UserLevel}
+     *         the highest user level for this user
      */
     public UserLevel getUserLevel(String userName);
 
-    // For internal use. Place holder to move securityContext storage.
+    /**
+     * Returns the list of user level for the passed user name. It checks the roles
+     * assigned to this user and checks against the well known Controller user
+     * roles to determines the corresponding list of user level associated with the user
+     *
+     * @param userName
+     *            the user name
+     * @return
+     *          the list of user level for this user
+     */
+    public List<UserLevel> getUserLevels(String userName);
+
+    /**
+     * Returns the Security Context
+     *
+     * @returns {@link org.springframework.security.web.context.SecurityContextRepository}
+     *          Security Context
+     */
     public SecurityContextRepository getSecurityContextRepo();
 
-    // Session manager to implement session mgmt across web-apps
+    /**
+     * Returns the Session Manager Interface Handler
+     *
+     * @return {@link org.opendaylight.controller.usermanager.ISessionManager}
+     *         session manager interface handler
+     */
     public ISessionManager getSessionManager();
 
+    /**
+     * Checks if the specified role belongs to any application. Usually an
+     * application will call this function when configuring a role, to check if
+     * that role is already being used by another application.
+     *
+     * @param role
+     *            The role to check
+     * @return true if the specified role belongs to any application or if the
+     *         role is a well-known controller role, false otherwise.
+     */
+    public boolean isRoleInUse(String role);
+
+    /* non-Javadoc
+     * Returns the password for a given user
+     *
+     * @param username
+     *            the user name
+     * @return password for the username
+     */
+    public String getPassword(String username);
+
 }