# User

User class handles the authenticated user

**Returns**: `Object` | `Object` - User details

## hasPermission(permission) ⇒ `Boolean` <a href="#haspermission" id="haspermission"></a>

Check if current user has a specific access permission

Available permissions are (more permissions may come in the future as the need for granularity grows):

```
Role with permissions (Permissions are inherited down the line, which means that an `AdminUser` also has `group/powerUser` and `group/user` etc)
ReadOnly:
- writer:access
- writer:group/readOnly
User:
- writer:group/user
PowerUser:
- writer:group/powerUser
AdminUser:
- writer:group/admin
```

**Returns**: `Boolean` - exists

### Parameters

| Param      | Type     | Description                                                |
| ---------- | -------- | ---------------------------------------------------------- |
| permission | `String` | **Required -** Permission to look for in users permissions |

### Example

```javascript
if (writer.api.user.hasPermission('writer:group/admin')) {
   // Do stuff
}
```

## hasUserPermission() ⇒ `boolean` <a href="#hasuserpermission" id="hasuserpermission"></a>

Convinience method to find out if current user is a "user"

**Returns**: `boolean` - If user is "user"

### Example

```javascript
if (writer.api.user.hasUserPermission()) {
   // Do stuff
}
```

## hasPowerUserPermission() ⇒ `boolean` <a href="#haspoweruserpermission" id="haspoweruserpermission"></a>

Convinience method to find out if current user is a "power user"

**Returns**: `boolean` - If user is "power user"

### Example

```javascript
if (writer.api.user.hasPowerUserPermission()) {
   // Do stuff
}
```

## hasAdminPermission() ⇒ `boolean` <a href="#hasadminpermission" id="hasadminpermission"></a>

Convinience method to find out if current user is an "admin user"

**Returns**: `boolean` - If user is "admin"

### Example

```javascript
if (writer.api.user.hasAdminPermission()) {
   // Do stuff
}
```

## getUserInfo() >\</code> <a href="#getuserinfo-less-than-code-greater-than-promise.and-lt-given-_name-string-family-_name-string-email" id="getuserinfo-less-than-code-greater-than-promise.and-lt-given-_name-string-family-_name-string-email"></a>

Get current logged in user info object. Object contains info about current user, organisation, selected unit and permissions

**Returns**: `Promise.<{given_name:String, family_name:String, email:String, picture:String, org:String, unit: String, permissions: Array.<string>}>` - User details

## logout() ⇒ `void` <a href="#logout" id="logout"></a>

Logout current user and reload page to trigger new login flow
