# 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.