<?php /** @license MIT * Copyright 2017 J. King, Dustin Wilson et al. * See LICENSE and AUTHORS files for details */ declare(strict_types=1); namespace JKingWeb\Arsse\User; interface Driver { const FUNC_NOT_IMPLEMENTED = 0; const FUNC_INTERNAL = 1; const FUNC_EXTERNAL = 2; // returns an instance of a class implementing this interface. public function __construct(); // returns a human-friendly name for the driver (for display in installer, for example) public static function driverName(): string; // authenticates a user against their name and password public function auth(string $user, string $password): bool; // check whether a user is authorized to perform a certain action; not currently used and subject to change public function authorize(string $affectedUser, string $action): bool; // checks whether a user exists public function userExists(string $user): bool; // adds a user public function userAdd(string $user, string $password = null); // removes a user public function userRemove(string $user): bool; // lists all users public function userList(): array; // sets a user's password; if the driver does not require the old password, it may be ignored public function userPasswordSet(string $user, string $newPassword = null, string $oldPassword = null); // removes a user's password; this makes authentication fail unconditionally public function userPasswordUnset(string $user, string $oldPassword = null): bool; }