AccAddGroup()
Synopsis
ULONG AccAddGroup(
struct AuthorityInfo * authority,
struct GroupInfo * group,
struct Entity * server );
Function
Create a group on the Accounts Server.
Result
Zero on success, replacing *group with the assigned record.
On error, the caller's record is unchanged.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ACCERROR_GROUPEXISTS means an unavailable name;
ACCERROR_NOFREEGROUPS means the server cannot assign another ID.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server requires AdminGroups or AdminAll. It assigns a
new group ID and uses the authorizer's user ID as administrator,
ignoring those proposed fields. Flags are copied. Group flags are
not stored in the AROS backend's group file. An empty name
requests an available NewGroup, NewGroup2, ... name. The new group
starts with no explicit members. No local GroupInfo is allocated
for the caller.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccAddMember()
Synopsis
ULONG AccAddMember(
struct AuthorityInfo * authority,
struct GroupInfo * group,
struct UserInfo * user,
struct Entity * server );
Function
Add a user to a group's explicit membership list.
Result
Zero on success. Neither caller record is modified.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ENVOYERR_UNKNOWNGROUP or ENVOYERR_UNKNOWNUSER means a stale/missing
record. ACCERROR_USEREXISTS means membership already existed.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server permits AdminAll or the group's recorded admin
and matches all fields of both records. Membership is keyed by
user ID; users sharing an ID share this membership. This operation
does not change the user's primary group field.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccAddUser()
Synopsis
ULONG AccAddUser(
struct AuthorityInfo * authority,
struct UserInfo * user,
STRPTR password,
struct Entity * server );
Function
Create a user on the Accounts Server.
Result
Zero on success, replacing *user with the assigned record.
On error, the caller's record is unchanged.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ACCERROR_USEREXISTS means an unavailable name;
ACCERROR_NOFREEUSERS means the server cannot assign another ID.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server requires AdminAll. It assigns the user ID rather
than using the proposed ID. An empty name requests an available
NewUser, NewUser2, ... name. The proposed primary group is retained.
A password is stored only when NeedsPassword is set and password
is nonempty. Other privilege flags are derived from server policy;
the returned record is authoritative. No local UserInfo storage is
allocated for the caller.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccDeleteGroup()
Synopsis
ULONG AccDeleteGroup(
struct AuthorityInfo * authority,
struct GroupInfo * group,
struct Entity * server );
Function
Delete a group and its explicit membership list.
Result
Zero on success. The caller's record is not modified or freed.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ENVOYERR_UNKNOWNGROUP means a stale/missing target.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server permits AdminAll or the group's recorded admin and
requires the complete target record to match. Deleting the group
does not delete its users or rewrite their primary group IDs.
Any surviving local copy of the group record is stale after success.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccDeleteUser()
Synopsis
ULONG AccDeleteUser(
struct AuthorityInfo * authority,
struct UserInfo * user,
struct Entity * server );
Function
Delete a user account and its stored group memberships.
Result
Zero on success. The caller's record is not modified or freed.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ENVOYERR_UNKNOWNUSER means a stale/missing target.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server requires AdminAll, matches all fields of the target
and refuses deletion of protected root IDs. The backend removes
memberships and the user record; it does not remove home-directory
contents or update a group's administrator ID. Any surviving local
copy of the record is stale after success.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccIDToGroup()
Synopsis
ULONG AccIDToGroup(
UWORD groupID,
struct GroupInfo * group,
struct Entity * server );
Function
Look up a group record by numeric ID.
Result
Zero on success, with *group replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNGROUP when no match exists.
On any error, *group is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server returns the first record with this ID in its
name-ordered list. IDs can be shared by multiple records in the
backend; an ID lookup is therefore not a unique-name lookup.
This is a lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccIDToUser()
Synopsis
ULONG AccIDToUser(
UWORD userID,
struct UserInfo * user,
struct Entity * server );
Function
Look up a user record by numeric ID.
Result
Zero on success, with *user replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNUSER when no match exists.
On any error, *user is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server returns the first record with this ID in its
name-ordered list. IDs can be shared by multiple records in the
backend; an ID lookup is therefore not a unique-name lookup.
This is a lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccMemberOf()
Synopsis
ULONG AccMemberOf(
struct GroupInfo * group,
struct UserInfo * user,
struct Entity * server );
Function
Check whether a user is a member of a group on the Accounts Server.
Result
Zero means membership was found. With the AROS server,
ENVOYERR_UNKNOWNMEMBER means no membership; ENVOYERR_UNKNOWNGROUP
or ENVOYERR_UNKNOWNUSER means the supplied record did not match.
Neither caller record is modified.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
Supply complete, unchanged records from successful lookups.
The AROS server checks all record fields, not just the IDs. A
stale record is not interchangeable with a current one. Membership
is checked against the server's membership list.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccModifyGroup()
Synopsis
ULONG AccModifyGroup(
struct AuthorityInfo * authority,
struct GroupInfo * newGroup,
struct GroupInfo * group,
struct Entity * server );
Function
Request changes to an existing group record.
Result
Zero on success, replacing *group with the returned record.
On error, *group is unchanged. Separate newGroup storage is not
modified.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ENVOYERR_UNKNOWNGROUP means a stale/missing target;
ACCERROR_GROUPEXISTS means a conflicting name.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server permits AdminAll or the group's recorded admin.
It updates name, group ID, admin ID and flags; an empty proposed
name leaves the existing name unchanged. The full current record
must match. Changing the group ID does not rewrite users' primary
group IDs, and the backend does not check for a conflicting numeric
group ID. Coordinate such changes explicitly.
Group flags are not represented in the AROS backend's group file
and are not preserved by saving and reloading that file.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccModifyUser()
Synopsis
ULONG AccModifyUser(
struct AuthorityInfo * authority,
struct UserInfo * newUser,
struct UserInfo * user,
struct Entity * server );
Function
Request changes to an existing user record.
Result
Zero on success, replacing *user with the returned record.
On error, *user is unchanged. Separate newUser storage is not
modified.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ENVOYERR_UNKNOWNUSER means a stale/missing target;
ACCERROR_USEREXISTS means a conflicting name.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server matches the current record in full. AdminAll may
change the name, primary group and password-required state; a user
with AdminName may rename themselves. The numeric user ID is not
changed. An empty proposed name leaves the existing name unchanged.
Clearing NeedsPassword removes the stored password and unlocks the
account. Other flags are derived from server policy, not copied as
arbitrary privilege bits; setting NeedsPassword does not create a
password. Use the returned record, not the proposal, afterwards.
Renaming retains any existing password token. Since ECrypt()
includes the username, reset the password after a rename when
using the stored Envoy-token authentication backend.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccNameToGroup()
Synopsis
ULONG AccNameToGroup(
STRPTR groupName,
struct GroupInfo * group,
struct Entity * server );
Function
Look up a group record by name.
Result
Zero on success, with *group replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNGROUP when no match exists.
On any error, *group is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server compares names case-insensitively. This is a
lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccNameToUser()
Synopsis
ULONG AccNameToUser(
STRPTR userName,
struct UserInfo * user,
struct Entity * server );
Function
Look up a user record by name.
Result
Zero on success, with *user replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNUSER when no match exists.
On any error, *user is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server compares names case-insensitively. This is a
lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccNextGroup()
Synopsis
ULONG AccNextGroup(
struct GroupInfo * group,
struct Entity * server );
Function
Enumerate group records maintained by the Accounts Server.
Result
Zero on success, replacing *group with the next record.
ENVOYERR_LASTGROUP at the end of the AROS server's list, or if the
previous record no longer matches. On any error, including end
of list, the caller's record remains unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server starts when the name is empty and ID is zero.
Otherwise it matches name, ID and all remaining fields before
advancing in case-insensitive name order. Editing the cursor record
or changing the server database can end enumeration early. There
is no snapshot across calls.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccNextMember()
Synopsis
ULONG AccNextMember(
struct GroupInfo * group,
struct UserInfo * user,
struct Entity * server );
Function
Enumerate the users belonging to a group on the Accounts Server.
Result
Zero on success, replacing *user with the next member's record.
The AROS server returns ENVOYERR_UNKNOWNGROUP for a mismatched
group or ENVOYERR_LASTMEMBER at the end, for a mismatched cursor,
or when the cursor no longer belongs to the group. On any error,
*user is unchanged. The group record is never modified.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server checks complete records and enumerates the group's
stored member IDs in ascending order, skipping IDs without a user
record. If an ID is shared by users, its first name-ordered record
is returned. There is no snapshot across calls.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccNextUser()
Synopsis
ULONG AccNextUser(
struct UserInfo * user,
struct Entity * server );
Function
Enumerate user records maintained by the Accounts Server.
Result
Zero on success, replacing *user with the next record.
ENVOYERR_LASTUSER at the end of the AROS server's list, or if the
previous record no longer matches. On any error, including end
of list, the caller's record remains unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server starts when the name is empty and ID is zero.
Otherwise it matches name, ID and all remaining fields before
advancing in case-insensitive name order. Editing the cursor record
or changing the server database can end enumeration early. There
is no snapshot across calls.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccRemoveMember()
Synopsis
ULONG AccRemoveMember(
struct AuthorityInfo * authority,
struct GroupInfo * group,
struct UserInfo * user,
struct Entity * server );
Function
Remove a user from a group's explicit membership list.
Result
Zero on success. Neither caller record is modified.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ENVOYERR_UNKNOWNGROUP or ENVOYERR_UNKNOWNUSER means a stale/missing
record. ENVOYERR_UNKNOWNMEMBER means membership was absent.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server permits AdminAll or the group's recorded admin
and matches all fields of both records. Membership is keyed by
user ID; users sharing an ID share this membership. This operation
does not change the user's primary group field.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccSetPassword()
Synopsis
ULONG AccSetPassword(
struct AuthorityInfo * authority,
struct UserInfo * user,
STRPTR password,
struct Entity * server );
Function
Set or remove a user password on the Accounts Server.
Result
Zero on success. The caller's user record is not modified.
ACCERROR_NOAUTHORITY means failed authorizer authentication;
ACCERROR_NOPRIVS means insufficient rights or a read-only backend.
ENVOYERR_UNKNOWNUSER means the complete target record did not match.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server permits AdminAll, or a user changing their own
password with AdminPassword. Setting a password also unlocks the
account; NULL or an empty string removes its password. Requery the
user record afterwards because flags may have changed. The new
password and authority password are sent as clear text by this API.
Requires an authenticated authorizer and writable backend;
a read-only usergroup.library backend reports ACCERROR_NOPRIVS.
Success confirms the server's in-memory change, not durable storage:
later file-save errors are not reported to the caller. A transport
error does not prove that no change occurred. Query the server
before retrying a destructive request.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccVerifyUser()
Synopsis
ULONG AccVerifyUser(
STRPTR userName,
STRPTR password,
struct UserInfo * user,
struct Entity * server );
Function
Ask the Accounts Server to authenticate a user and, on success,
return the user's record. This does not change the caller's local
credentials or establish a login session.
Result
Zero on success, with *user replaced by the returned record.
On any error, *user is unchanged. The AROS server reports
ENVOYERR_UNKNOWNUSER for an unknown/locked user or failed
authentication; these cases are not distinguished.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The password is placed in the request as clear text by this API.
The AROS server applies its configured authentication policy.
An unlocked account without UFLAGF_NeedsPassword accepts any
password token.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AccVerifyUserCrypt()
Synopsis
ULONG AccVerifyUserCrypt(
STRPTR userName,
STRPTR password,
struct UserInfo * user,
struct Entity * server );
Function
Ask the Accounts Server to authenticate a user and, on success,
return the user's record. This does not change the caller's local
credentials or establish a login session.
Result
Zero on success, with *user replaced by the returned record.
On any error, *user is unchanged. The AROS server reports
ENVOYERR_UNKNOWNUSER for an unknown/locked user or failed
authentication; these cases are not distinguished.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server applies its configured authentication policy.
An unlocked account without UFLAGF_NeedsPassword accepts any
password token. A crypt token is sent as given, not computed by
this call.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
AllocGroupInfo()
Synopsis
struct GroupInfo * AllocGroupInfo();
Function
Allocate a zero-filled struct GroupInfo for account queries.
Result
A caller-owned pointer, or NULL if allocation fails. Release a
successful allocation with FreeGroupInfo().
Notes
Storage is allocated with MEMF_PUBLIC | MEMF_CLEAR. This allocates
only a local record; it does not create a server-side group, contact
the Accounts Server or reserve an account ID. The zero-filled record
can start NextGroup() enumeration. Call from task context.
AllocUserInfo()
Synopsis
struct UserInfo * AllocUserInfo();
Function
Allocate a zero-filled struct UserInfo for account queries.
Result
A caller-owned pointer, or NULL if allocation fails. Release a
successful allocation with FreeUserInfo().
Notes
Storage is allocated with MEMF_PUBLIC | MEMF_CLEAR. This allocates
only a local record; it does not create a server-side user, contact
the Accounts Server or reserve an account ID. The zero-filled record
can start NextUser() enumeration. Call from task context.
ECrypt()
Synopsis
STRPTR ECrypt(
STRPTR buffer,
STRPTR password,
STRPTR username );
Function
Compute the legacy, username-dependent Envoy password token. The
first 12 password and username bytes participate; ASCII uppercase
letters in the username are folded to lowercase. The result has
11 characters followed by a NUL byte.
Result
buffer after writing the token, or NULL when buffer is NULL.
No output-size check is performed.
Notes
No allocation, server request or wait is performed. All buffers
remain caller-owned. This is the Envoy compatibility token format,
not reversible encryption. Bytes after the first 12 do not change
the token, but the input strings must still be NUL-terminated.
FreeGroupInfo()
Synopsis
void FreeGroupInfo(
struct GroupInfo * group );
Function
Free a record allocated by AllocGroupInfo().
Result
None. NULL has no effect.
Notes
Finish all uses of the record before freeing it. Its pointer is
invalid afterwards. This releases local storage only; it does not
delete the corresponding server-side group or contact the server.
Call from task context.
FreeUserInfo()
Synopsis
void FreeUserInfo(
struct UserInfo * user );
Function
Free a record allocated by AllocUserInfo().
Result
None. NULL has no effect.
Notes
Finish all uses of the record before freeing it. Its pointer is
invalid afterwards. This releases local storage only; it does not
delete the corresponding server-side user or contact the server.
Call from task context.
IDToGroup()
Synopsis
ULONG IDToGroup(
UWORD groupID,
struct GroupInfo * group );
Function
Look up a group record by numeric ID.
Result
Zero on success, with *group replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNGROUP when no match exists.
On any error, *group is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server returns the first record with this ID in its
name-ordered list. IDs can be shared by multiple records in the
backend; an ID lookup is therefore not a unique-name lookup.
This is a lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
IDToUser()
Synopsis
ULONG IDToUser(
UWORD userID,
struct UserInfo * user );
Function
Look up a user record by numeric ID.
Result
Zero on success, with *user replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNUSER when no match exists.
On any error, *user is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server returns the first record with this ID in its
name-ordered list. IDs can be shared by multiple records in the
backend; an ID lookup is therefore not a unique-name lookup.
This is a lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
MemberOf()
Synopsis
ULONG MemberOf(
struct GroupInfo * group,
struct UserInfo * user );
Function
Check whether a user is a member of a group on the Accounts Server.
Result
Zero means membership was found. With the AROS server,
ENVOYERR_UNKNOWNMEMBER means no membership; ENVOYERR_UNKNOWNGROUP
or ENVOYERR_UNKNOWNUSER means the supplied record did not match.
Neither caller record is modified.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
Supply complete, unchanged records from successful lookups.
The AROS server checks all record fields, not just the IDs. A
stale record is not interchangeable with a current one. Membership
is checked against the server's membership list.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
NameToGroup()
Synopsis
ULONG NameToGroup(
STRPTR groupName,
struct GroupInfo * group );
Function
Look up a group record by name.
Result
Zero on success, with *group replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNGROUP when no match exists.
On any error, *group is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server compares names case-insensitively. This is a
lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
NameToUser()
Synopsis
ULONG NameToUser(
STRPTR userName,
struct UserInfo * user );
Function
Look up a user record by name.
Result
Zero on success, with *user replaced by the returned record.
The AROS server returns ENVOYERR_UNKNOWNUSER when no match exists.
On any error, *user is unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server compares names case-insensitively. This is a
lookup, not authentication.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
NextGroup()
Synopsis
ULONG NextGroup(
struct GroupInfo * group );
Function
Enumerate group records maintained by the Accounts Server.
Result
Zero on success, replacing *group with the next record.
ENVOYERR_LASTGROUP at the end of the AROS server's list, or if the
previous record no longer matches. On any error, including end
of list, the caller's record remains unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server starts when the name is empty and ID is zero.
Otherwise it matches name, ID and all remaining fields before
advancing in case-insensitive name order. Editing the cursor record
or changing the server database can end enumeration early. There
is no snapshot across calls.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
NextMember()
Synopsis
ULONG NextMember(
struct GroupInfo * group,
struct UserInfo * user );
Function
Enumerate the users belonging to a group on the Accounts Server.
Result
Zero on success, replacing *user with the next member's record.
The AROS server returns ENVOYERR_UNKNOWNGROUP for a mismatched
group or ENVOYERR_LASTMEMBER at the end, for a mismatched cursor,
or when the cursor no longer belongs to the group. On any error,
*user is unchanged. The group record is never modified.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server checks complete records and enumerates the group's
stored member IDs in ascending order, skipping IDs without a user
record. If an ID is shared by users, its first name-ordered record
is returned. There is no snapshot across calls.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
NextUser()
Synopsis
ULONG NextUser(
struct UserInfo * user );
Function
Enumerate user records maintained by the Accounts Server.
Result
Zero on success, replacing *user with the next record.
ENVOYERR_LASTUSER at the end of the AROS server's list, or if the
previous record no longer matches. On any error, including end
of list, the caller's record remains unchanged.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server starts when the name is empty and ID is zero.
Otherwise it matches name, ID and all remaining fields before
advancing in case-insensitive name order. Editing the cursor record
or changing the server database can end enumeration early. There
is no snapshot across calls.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
VerifyUser()
Synopsis
ULONG VerifyUser(
STRPTR userName,
STRPTR password,
struct UserInfo * user );
Function
Ask the Accounts Server to authenticate a user and, on success,
return the user's record. This does not change the caller's local
credentials or establish a login session.
Result
Zero on success, with *user replaced by the returned record.
On any error, *user is unchanged. The AROS server reports
ENVOYERR_UNKNOWNUSER for an unknown/locked user or failed
authentication; these cases are not distinguished.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The password is placed in the request as clear text by this API.
The AROS server applies its configured authentication policy.
An unlocked account without UFLAGF_NeedsPassword accepts any
password token.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.
VerifyUserCrypt()
Synopsis
ULONG VerifyUserCrypt(
STRPTR userName,
STRPTR password,
struct UserInfo * user );
Function
Ask the Accounts Server to authenticate a user and, on success,
return the user's record. This does not change the caller's local
credentials or establish a login session.
Result
Zero on success, with *user replaced by the returned record.
On any error, *user is unchanged. The AROS server reports
ENVOYERR_UNKNOWNUSER for an unknown/locked user or failed
authentication; these cases are not distinguished.
ENVOYERR_NULLPTR denotes a missing required pointer;
ENVOYERR_NORESOURCES denotes an allocation or context failure.
Discovery, NIPC and server errors propagate unchanged; see
<envoy/errors.h> and <envoy/accounts.h>.
Notes
The AROS server applies its configured authentication policy.
An unlocked account without UFLAGF_NeedsPassword accepts any
password token. A crypt token is sent as given, not computed by
this call.
Synchronous task-context call; may block. The requested five-
second NIPC transaction timeout does not bound discovery, local
server waits or total execution time. Caller-owned data must remain
valid until return. Strings must be NUL-terminated; wire string
fields retain at most 31 characters. Do not close accounts.library
from this task while the request is pending.
The server is the per-task cached "Accounts Server" entity, on the
host selected by Envoy/AccountsServer through GetVar(), or local
when no host is selected. The library owns this cached link.