public function store(Request $request)
    {
        // validate
        $this->registerValidators();

        $validator = Validator::make($request->all(), [
            'route'         => 'required|max:255|string|unique:route_permission,route',
            'permissions'   => 'required|max:255|array|rolePermission',
            'roles'         => 'required|max:255|array|rolePermission'
        ]);

        if ($validator->fails()) {
            return response()->json(arrayView('phpsoft.users::errors/validation', [
                'errors' => $validator->errors()
            ]), 400);
        }

        // check current user is admin
        if (!(Auth::user() && Auth::user()->hasRole('admin'))) {
            return response()->json(null, 403);
        }

        // add permissions and roles for the route
        $routePermission = RoutePermission::setRoutePermissionsRoles(
            $request['route'],
            $request['permissions'],
            $request['roles']
        );

        return response()->json(arrayView('phpsoft.users::routePermission/read', [
            'routePermission' => $routePermission
        ]), 201);
    }