#
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
// Use database functions to fetch or create an account
const someAccountData = {
_id: 'jklfdsjklfds',
username: 'stuyk',
password: 'somehashedpassword',
};
// Bind account data to the player after fetching
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) {
// not a valid password
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()) {
// No account bound
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' });
}
#
permissions
Click on the link above to see how to use account permissions.
#
groups
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) => {
// Only called when the `email` property for a given player is changed
});