Account Document
See Documents Section for further information on documents.
Extending Account
Extending the default Account Interface is super simple. Just add a declare module
to any plugin.
declare module '@Shared/types/account.js' {
export interface Account {
newCoolData: string;
}
}
useAccountBinder
Always bind a player to account data when they authenticate to your server.
bind
const someAccountData = {
_id: 'jklfdsjklfds',
username: 'stuyk',
password: 'somehashedpassword',
};
const document = Rebar.document.account.useAccountBinder(player).bind(someAccountData);
useAccount
Data can be retrieved for the bound account like this.
const account = Rebar.document.account.useAccount(player);
const data = account.get();
console.log(data.email);
checkPassword
When you setup an account you often want to also setup a password, or check a password.
We've made it pretty easy in Rebar to simply check a password to login.
function someFunction(player: alt.Player, someAccountDataHere: Account) {
const document = Rebar.document.account.useAccountBinder(player).bind(someAccountDataHere);
const isValid = document.checkPassword('myplaintextpassword');
if (!isValid) {
return;
}
}
get
Get the entire document bound to the player.
async function someFunction(player: alt.Player) {
const document = Rebar.document.account.useAccount(player);
const data = document.get();
}
getField
Get a specific field for the given document.
async function someFunction(player: alt.Player) {
const document = Rebar.document.account.useAccount(player);
const username = document.getField('username');
}
isValid
If you need to check if a player has an account document bound to them, you can use the following method.
async function someFunction(player: alt.Player) {
const document = Rebar.document.account.useAccount(player);
if (!document.isValid()) {
return;
}
}
getCharacters
When you need to obtain a character file for an account, you can use this function to get all existing characters.
This will return all character documents that belong to the account.
async function someFunction(player: alt.Player) {
const document = Rebar.document.account.useAccount(player);
const characters = await document.getCharacters();
if (characters.length >= 1) {
console.log('They have a character');
} else {
console.log('They do not have a character');
}
}
setBanned
Banning an account is pretty straight forward but it does not prevent new accounts with new ips.
It's simply an account level ban that happens during server runtime.
import { useRebar } from '@Server/index.js';
const Rebar = useRebar();
function someFunction(player: alt.Player) {
const document = Rebar.document.account.useAccount(player);
document.setBanned('oops your banned');
}
set
Set a single field to be stored in the database.
function someFunction(player: alt.Player) {
const document = Rebar.document.account.useAccount(player);
document.set('banned', true);
}
setBulk
function someFunction(player: alt.Player) {
const document = Rebar.document.account.useAccount(player);
document.setBulk({ banned: true, reason: 'big nerd' });
}
Click on the link above to see how to use account permissions.
Click on the link above to see how to use account groups.
useAccountEvents
Listen for individual key changes for a given document.
Any field from the account
document is valid.
on
const AccountEvents = Rebar.document.account.useAccountEvents();
AccountEvents.on('email', (player, newValue, oldValue) => {
});