# Interface User

All Superinterfaces:
  `Principal`

All Known Implementing Classes:
  `AbstractUser`, `GenericUser`, `MemoryUser`

public interface User extends Principal
Abstract representation of a user in a `UserDatabase`. Each user is optionally associated with a set of `Group`s through which they inherit additional security roles, and is optionally assigned a set of specific `Role`s.

Since:
  4.1
Author:
  Craig R. McClanahan

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addGroup(Group group)`
  Add a new `Group` to those this user belongs to.
  `void`
  `addRole(Role role)`
  Add a `Role` to those assigned specifically to this user.
  `String`
  `getFullName()`
  `Iterator<Group>`
  `getGroups()`
  `String`
  `getPassword()`
  `Iterator<Role>`
  `getRoles()`
  `UserDatabase`
  `getUserDatabase()`
  `String`
  `getUsername()`
  `boolean`
  `isInGroup(Group group)`
  Is this user in the specified `Group`?
  `boolean`
  `isInRole(Role role)`
  Is this user specifically assigned the specified `Role`?
  `void`
  `removeGroup(Group group)`
  Remove a `Group` from those this user belongs to.
  `void`
  `removeGroups()`
  Remove all `Group`s from those this user belongs to.
  `void`
  `removeRole(Role role)`
  Remove a `Role` from those assigned to this user.
  `void`
  `removeRoles()`
  Remove all `Role`s from those assigned to this user.
  `void`
  `setFullName(String fullName)`
  Set the full name of this user.
  `void`
  `setPassword(String password)`
  Set the logon password of this user, optionally prefixed with the identifier of an encoding scheme surrounded by curly braces, such as `{md5}xxxxx`.
  `void`
  `setUsername(String username)`
  Set the logon username of this user, which must be unique within the scope of a `UserDatabase`.

  ### Methods inherited from interface java.security.Principal

  `equals, getName, hashCode, implies, toString`

- ## Method Details

  - ### getFullName

    String getFullName()
    Returns:
      the full name of this user.

  - ### setFullName

    void setFullName(String fullName)
    Set the full name of this user.
    Parameters:
      `fullName` - The new full name

  - ### getGroups

    Iterator<Group> getGroups()
    Returns:
      the set of `Group`s to which this user belongs.

  - ### getPassword

    String getPassword()
    Returns:
      the logon password of this user, optionally prefixed with the identifier of an encoding scheme surrounded by curly braces, such as `{md5}xxxxx`.

  - ### setPassword

    void setPassword(String password)
    Set the logon password of this user, optionally prefixed with the identifier of an encoding scheme surrounded by curly braces, such as `{md5}xxxxx`.
    Parameters:
      `password` - The new logon password

  - ### getRoles

    Iterator<Role> getRoles()
    Returns:
      the set of `Role`s assigned specifically to this user.

  - ### getUserDatabase

    UserDatabase getUserDatabase()
    Returns:
      the `UserDatabase` within which this User is defined.

  - ### getUsername

    String getUsername()
    Returns:
      the logon username of this user, which must be unique within the scope of a `UserDatabase`.

  - ### setUsername

    void setUsername(String username)
    Set the logon username of this user, which must be unique within the scope of a `UserDatabase`.
    Parameters:
      `username` - The new logon username

  - ### addGroup

    void addGroup(Group group)
    Add a new `Group` to those this user belongs to.
    Parameters:
      `group` - The new group

  - ### addRole

    void addRole(Role role)
    Add a `Role` to those assigned specifically to this user.
    Parameters:
      `role` - The new role

  - ### isInGroup

    boolean isInGroup(Group group)
    Is this user in the specified `Group`?
    Parameters:
      `group` - The group to check
    Returns:
      `true` if the user is in the specified group

  - ### isInRole

    boolean isInRole(Role role)
    Is this user specifically assigned the specified `Role`? This method does NOT check for roles inherited based on `Group` membership.
    Parameters:
      `role` - The role to check
    Returns:
      `true` if the user has the specified role

  - ### removeGroup

    void removeGroup(Group group)
    Remove a `Group` from those this user belongs to.
    Parameters:
      `group` - The old group

  - ### removeGroups

    void removeGroups()
    Remove all `Group`s from those this user belongs to.

  - ### removeRole

    void removeRole(Role role)
    Remove a `Role` from those assigned to this user.
    Parameters:
      `role` - The old role

  - ### removeRoles

    void removeRoles()
    Remove all `Role`s from those assigned to this user.