# Απαίτηση χρήστη ή δικαιώματος σε μια ενέργεια

> Χρησιμοποιήστε τις επιλογές user και permissions του NEWACTION ώστε η εξουσιοδότηση να βρίσκεται δίπλα στην ενέργεια και όχι σε κάθε διαδρομή.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: el
Content-SHA256: 677c84e861fba265dcaef945eeb211d001dee4d267c878ea847e8841c9feeba7
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Μια ενέργεια μπορεί να προστατεύσει τον εαυτό της:

- το `user: true` απαιτεί πιστοποιημένο χρήστη (αλλιώς 401)· το `user: false` επιτρέπει μόνο ανώνυμα αιτήματα
- το `permissions: 'a,b'` απαιτεί ο χρήστης να έχει τουλάχιστον ένα από τα αναφερόμενα δικαιώματα. Το Total.js διαβάζει το `user.permissions` (ή το `user.roles`), που μπορεί να είναι πίνακας από strings ή αντικείμενο
- οι χρήστες με `sa: true` ή `su: true` (υπερδιαχειριστές) περνούν κάθε έλεγχο

Ο χρήστης προέρχεται από το `AUTH()`, όπως στη συνταγή για την ταυτοποίηση.

```js definitions/auth.js
AUTH(function($) {

	var users = {
		'token-reports': { id: '1', name: 'Anna', permissions: ['reports'] },
		'token-sales': { id: '2', name: 'Boris', permissions: ['sales'] },
		'token-admin': { id: '3', name: 'Root', sa: true }
	};

	var user = users[$.cookie('auth')];
	user ? $.success(user) : $.invalid();
});
```

```js definitions/reports.js
NEWACTION('Reports/read', {
	name: 'Read reports',
	user: true,
	permissions: 'reports,audit',
	action: function($) {
		$.success($.user.name);
	}
});
```

```js controllers/reports.js
exports.install = function() {
	ROUTE('GET /reports/ --> *Reports/read');
};
```
