---
url: "https://vueda.dev/v3/reference/api/js/router/guards/functions/requireGroups.md"
title: "requireGroups"
---

# requireGroups

## Overview

Require the user to have certain groups, or show a toast message for denial.

## Signature

`requireGroups(instance, toastArgs, groups, redirectTo, to, router, pinia)`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| <span id="param-instance">instance</span> | `App` | yes | The Vue app instance. |
| <span id="param-toastArgs">toastArgs</span> | `object` | yes | Toast message options. |
| <span id="param-groups">groups</span> | `string[]` | yes | The groups the user must belong to at least one. |
| <span id="param-redirectTo">redirectTo</span> | `string \| RouteLocationAsRelativeGeneric \| RouteLocationAsPathGeneric` | yes | Where to redirect if not authorized. |
| <span id="param-to">to</span> | `RouteLocationNormalizedLoadedGeneric` | yes | The target route. |
| <span id="param-router">router</span> | `Router` | yes | The router instance. |
| <span id="param-pinia">pinia</span> | `Pinia` | yes | The Pinia instance. |

#### toastArgs Properties

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="param-toastArgs-detail">detail</span> | `string` | no |  |  |
| <span id="param-toastArgs-life">life</span> | `number` | no |  |  |
| <span id="param-toastArgs-severity">severity</span> | `string` | no |  |  |
| <span id="param-toastArgs-summary">summary</span> | `string` |  |  |  |

### Returns

`Promise`

True if authorized, or redirect route.
 Rejects with the request error when the current-user request fails, which rejects the navigation.

## Examples

```js
import { requireGroups } from "@vueda/router/guards";
import { createRouter, createWebHistory } from "vue-router";

const toastArgs = {
  summary: "Permission Denied",
  detail: "You do not have permission to access",
  severity: "error",
};

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/groups-required/',
      name: 'groups-required',
      component: () => import('@/views/ViewGroupsRequired.vue'),
      beforeEnter: (to, from) =>
        requireGroups(app, toastArgs, ["group1", "group2"], { name: "access-denied" }, to, router),
    },
    // other routes
  ],
});

export default router;
```

## Source

`client/lib/router/guards.js:287`
