Launcher Login Plugin
The Launcher Login object is a non-visual system object for your Custom Launcher that handles user authentication, account verification, session persistence, entitlement refreshes, access checks, and product download retrieval.
Unlike buttons, labels, and other interface elements, this object does not appear as an interactive control to the end user. Instead, it acts as the secure logic bridge between your launcher flow and your configured web login system. In practical terms, it is the object you use when you want players to sign in, restore a saved session, check if they own a product, verify whether they can access premium content, or pull down download information for entitled files.
The Launcher Login object is ideal for building account-driven launchers, premium content gateways, customer portals, and member-only download experiences inside a Custom Game Launcher.
Launcher Login Overview
The Launcher Login object is designed to centralize user identity and entitlement logic in one place. Rather than scattering login checks across multiple pages, you can configure one object and then let the rest of your launcher react to its events and mapped variables.
What it is used for
- ✦ Signing users into your launcher account system
- ✦ Verifying email codes after registration
- ✦ Saving a session so users can auto-login next time
- ✦ Checking if a user has a role or owns a product
- ✦ Refreshing roles, products, and download data after login
- ✦ Powering gated pages and download areas in a Custom Game Launcher
How it fits into your launcher
A common setup is to place the Launcher Login object on your first page, add input objects for email and password, add buttons for login and registration, then let this object handle the account flow behind the scenes. Other objects then react to its state. For example:
- A Button can trigger a login action.
- A Text Label can display the logged-in username from a mapped variable.
- A List Box can be populated with entitled downloads after a successful account refresh.
- A Page change can send the user to a members area once access is confirmed.
This object is non-visual. Its placeholder image in the editor helps you identify and configure it, but it is not intended to function as a visible control in the final launcher interface.
Default Settings
When added to your launcher, the Launcher Login object starts with a practical default configuration that is ready to be pointed at your login system.
| Property | Default Value |
|---|---|
| Name | LauncherLogin_1 |
| Base URL | Blank by default |
| API Key | Blank by default |
| Login Endpoint | /api/v1/auth?action=login |
| Verify Endpoint | /api/v1/auth?action=verify |
| Register Endpoint | /api/v1/auth?action=register |
| Resend Verification Endpoint | /api/v1/auth?action=resend_verification |
| Logout Endpoint | /api/v1/auth?action=logout |
| Entitlements Endpoint | /api/v1/me |
| Downloads Endpoint | /api/v1/me |
| Access Check Endpoint | /api/v1/access/check |
| Forgot Password Endpoint | /api/v1/auth?action=forgot_password |
| Reset Password Endpoint | /api/v1/auth?action=reset_password |
| HMAC Enabled | Disabled |
| Allowed Clock Skew | 300 seconds |
Properties
The Launcher Login object is configured through a set of focused property groups. For beginners, the most important fields are the Base URL, API Key, and your variable mappings.
Connection
- Base URL: The root address of your Launcher Login web script. This should not have a trailing slash.
- API Key: The key generated by your Launcher Login web script. This is normally required and should match your server-side setup.
Endpoints
- Login: Sends sign-in requests.
- Verify: Submits an email verification code.
- Register: Creates a new user account.
- Resend Verification: Requests another verification code.
- Logout: Ends the current user session.
- Entitlements: Retrieves the current user profile, roles, products, and related account data.
- Access Check: Checks if the current user is allowed to access a specific feature or resource.
- Downloads: Retrieves download data, typically from the same user data endpoint.
- Forgot Password: Starts a reset request for an email address.
- Reset Password: Submits a new password using a reset token.
Most users will keep the default endpoint paths unless their login system has been customized.
HMAC Optional Security
- Enable HMAC Signing: Turns signed request mode on if your web script expects it.
- Public Key: Your public key for signed requests.
- Secret Key: Your secret key for signed requests.
- Allowed Clock Skew: A timing tolerance in seconds, normally left at 300.
Only enable HMAC if your login setup specifically requires it. For most beginners, the standard Base URL and API Key setup is the place to start.
Variable Mapping
This is where the object becomes truly useful. When a login or refresh succeeds, the object stores returned values into your chosen launcher variables.
| Mapped Variable | Purpose | Default |
|---|---|---|
| Login Success | Stores 1 on success and 0 on failure | login_ok |
| Username | Stores the current username | user_name |
| Stores the current email address | user_email | |
| Roles JSON | Stores user roles in JSON format | user_roles |
| Products JSON | Stores owned products in JSON format | user_products |
| Downloads JSON | Stores entitled downloads in JSON format | product_downloads |
| Token | Stores the session token | user_token |
| Verified | Stores 1 if the account is verified | user_verified |
| User ID | Stores the user identifier | user_id |
All Possible Events
The Launcher Login object exposes a broad event set so your launcher can react at every major point in the account flow.
| Event | What it means |
|---|---|
| onLoginStart | Fires before a login request is sent. Perfect for showing a loading state or disabling your sign-in button. |
| onLoginSuccess | Login succeeded and mapped variables have been updated. |
| onLoginFailed | Login failed. Use this to show an error message or return the user to the login form. |
| onLoginSkipped | Auto-login was attempted but no saved session was found. |
| onLogout | Logout completed and any local session state has been cleared. |
| onRegisterSuccess | Account registration succeeded. |
| onRegisterFailed | Account registration failed. |
| onVerificationRequired | The account must be verified before login can continue. |
| onVerified | Email verification succeeded. |
| onResendSuccess | A new verification code was sent successfully. |
| onForgotSuccess | A password reset request was sent successfully. |
| onResetSuccess | The password was successfully changed. |
| onEntitlementsReady | Roles, products, and downloads have been refreshed and are ready to use. |
| onAccessAllowed | An access check returned allowed. |
| onAccessDenied | An access check returned denied. |
| onDownloadsReady | Downloads data is ready after a query or filter operation. |
| onNoDownloads | No downloads were available for the requested filter. |
| onRateLimited | The server responded with a rate limit condition. |
| onEndpointFailed | A secondary request failed, such as entitlements refresh or password reset submission. |
All Possible Actions
The Launcher Login object supports a strong set of built-in actions for authentication, account setup, entitlement checks, saved sessions, and password recovery.
| Action | What it does |
|---|---|
| Launcher: Query Login | Sends the login request using a username or email and password, then stores returned values into the object’s mapped variables. |
| Launcher: Query Verify | Submits an email address and verification code to confirm a newly created account. |
| Launcher: Query Downloads | Retrieves entitled download data. You can optionally filter to one product SKU. |
| Launcher: Register | Registers a new account using email, password, first name, and last name. |
| Launcher: Resend Verification | Requests another verification code for the specified email address. |
| Launcher: Logout | Logs out the current user. |
| Launcher: Refresh Entitlements | Refreshes the current user’s roles, products, and downloads from the server. |
| Launcher: Check Role | Checks whether the current user has a specific role slug. |
| Launcher: Check Product | Checks whether the current user owns a specific product SKU. |
| Launcher: Save Session | Stores a session token locally so the launcher can restore the session later. |
| Launcher: Try Auto Login | Attempts to restore a saved session and sign the user in automatically. |
| Launcher: Clear Saved Session | Removes any saved session so automatic sign-in no longer occurs. |
| Launcher: Session Exists? | Checks if a saved session is present and stores the result into a variable as 1 or 0. |
| Launcher: Forgot Password | Starts a password reset flow for an email address. |
| Launcher: Reset Password | Submits a reset token and new password to complete the password reset. |
| Launcher: If Has Role | Checks if the user has a role and can optionally halt the rest of the action sequence if they do not. |
| Launcher: If Has Product | Checks if the user owns a product and can optionally halt the rest of the action sequence if they do not. |
| Launcher: If Access Allowed | Checks if the current user is allowed to access a given reference, can optionally halt the sequence if denied, and can store the result into a variable. |
Building Logic with Events and Actions
The Launcher Login object becomes most powerful when it is treated as the account brain of your launcher. One action kicks off a request, one event confirms the result, and other objects respond from there.
Common logic patterns
- Login flow: Button click → Launcher: Query Login → onLoginSuccess → change page and refresh user-facing labels.
- Verification flow: Register → onVerificationRequired → show verification page → Launcher: Query Verify → onVerified.
- Premium gating: Launcher: If Has Product or Launcher: If Access Allowed → show premium page or display locked message.
- Silent restore: On Launcher Start → Launcher: Try Auto Login → onLoginSuccess or onLoginSkipped.
- Download center: onEntitlementsReady → Launcher: Query Downloads → onDownloadsReady → populate UI from stored data.
Because the object writes back to variables, you can build a Custom Launcher where text labels, buttons, page changes, and conditional actions all respond to the signed-in user state without repeating the same setup everywhere.
Example 1: Basic Login Page for Beginners
Create a straightforward sign-in flow for your Custom Game Launcher.
- Add a Launcher Login object to the page.
- Enter your Base URL and API Key in the object properties.
- Add two Input Box objects: one for email and one for password.
- Add a Button object labelled Login.
- On that button click, run Launcher: Query Login and feed in the values from your input objects.
- Under onLoginStart, show a loading panel or disable the login button.
- Under onLoginSuccess, change to your members page and update a Text Label using the mapped username variable.
- Under onLoginFailed, show an error message label such as “Login failed, please check your details.”
Example 2: Locked Premium Downloads Area
Only allow entitled users to access a premium download page.
- After login, run Launcher: Refresh Entitlements.
- When onEntitlementsReady fires, run Launcher: If Has Product using your premium SKU.
- If the user owns the product, continue the action sequence and change to your premium downloads page.
- If they do not own the product, halt the sequence and display a page or label explaining that access is restricted.
- Once on the premium page, run Launcher: Query Downloads for that SKU.
- Use onDownloadsReady to populate your interface with downloadable items.
- Use onNoDownloads to display a friendly fallback state if no files are currently assigned.
Session and Auto Login Flow
One of the nicest user experience upgrades you can build is a saved session. After a successful login, you can store the token locally so the user does not need to type their credentials every time.
Recommended setup
- After onLoginSuccess, run Launcher: Save Session using your mapped token variable.
- On launcher start, run Launcher: Try Auto Login.
- If a session exists and is accepted, your launcher can skip the manual login page entirely.
- If no session exists, onLoginSkipped lets you gracefully show the normal login page.
- When the user clicks a logout button, use Launcher: Logout followed by Launcher: Clear Saved Session.
This is a great pattern for launchers that open frequently and need to feel polished rather than constantly nagging the user for credentials like an overexcited nightclub bouncer.
Registration, Verification, and Password Recovery
The Launcher Login object also supports a full account onboarding loop. This means you can let a new user create an account, verify their email, resend verification codes, and reset their password, all without leaving the launcher experience.
Suggested page structure
- Login Page: Email input, password input, login button, forgot password button.
- Register Page: Email, password, first name, last name, register button.
- Verification Page: Email input, verification code input, verify button, resend code button.
- Reset Page: Email input or token flow, new password input, reset button.
That structure works very well for a clean Custom Launcher account area and keeps each task easy for new users to understand.
Custom CSS
The Launcher Login object itself is a non-visual plugin object, so it does not expose a visual surface for Custom CSS styling in the same way that a button, list box, or image object does.
Custom CSS is not applicable to the Launcher Login object itself because there is no visible rendered control to style. If you want to style your login experience, apply Custom CSS to the visual objects around it, such as Input Boxes, Buttons, Labels, panels, and other interface elements used to build the account pages.
Interactive visual styling example for a login button
Below is a live example of the kind of visual polish you can apply to the Button object that triggers your Launcher Login actions. This keeps the account flow looking premium while the Launcher Login object handles the logic behind the scenes.
This example is intentionally applied to a visual object in the login interface rather than the Launcher Login plugin itself. That is the correct approach for non-visual plugin objects.
/* Developer Edition Custom CSS Example for a login button */
/* Apply this to the Button object that triggers Launcher: Query Login */
/* Visual polish only. Avoid geometry overrides. */
background: linear-gradient(180deg, rgba(30,41,59,0.94), rgba(15,23,42,0.96)) !important;
border: 1px solid rgba(96,165,250,0.30) !important;
border-radius: 12px !important;
box-shadow: 0 12px 24px rgba(0,0,0,0.22), inset 0 0 18px rgba(59,130,246,0.06) !important;
color: #eaf2ff !important;
transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease, background 0.2s ease !important;
:hover {
border-color: rgba(96,165,250,0.58) !important;
box-shadow: 0 18px 34px rgba(0,0,0,0.28), 0 0 20px rgba(59,130,246,0.14) !important;
}
:active {
box-shadow: 0 8px 18px rgba(0,0,0,0.24), 0 0 12px rgba(59,130,246,0.10) !important;
}
::before {
content: "" !important;
position: absolute !important;
inset: 0 !important;
background: linear-gradient(135deg, rgba(59,130,246,0.18), rgba(125,211,252,0.05)) !important;
pointer-events: none !important;
}
::after {
content: "" !important;
position: absolute !important;
inset: 1px !important;
border-radius: 11px !important;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), inset 0 0 18px rgba(59,130,246,0.05) !important;
pointer-events: none !important;
}
Tips for New Users
- Start with one Launcher Login object per launcher unless you have a very specific advanced setup.
- Configure the Base URL and API Key first before wiring any buttons or pages.
- Use clear variable names so labels and conditions stay easy to understand later.
- Build your login page first, then add registration, verification, premium checks, and downloads once the core sign-in flow works.
- Use the event system to react to outcomes instead of trying to cram everything into one giant action chain. Giant action chains are how sane men end up staring at the wall at 2 AM.
Summary
The Launcher Login object is the account control center for a Custom Game Launcher. It is purpose-built for sign-in flows, verification, session restore, entitlement syncing, access control, and download delivery. When combined with your page logic, buttons, labels, and other objects, it lets you create a launcher that feels like a connected account platform rather than a static front end.
For most projects, the best path is simple: configure the object, map your variables, hook up your login button, respond to onLoginSuccess, and then expand from there into premium access, auto-login, and downloads.