Skip to main content

Adding Authentication to Your App

Every app needs to know who's allowed to do what. ValkyrAI makes security easy with our powerful Role-Based Access Control (RBAC) system!

Understanding Authentication vs. Authorization​

Let's get the basics straight:

  • Authentication = Who are you? (logging in, proving your identity)
  • Authorization = What are you allowed to do? (permissions)

ValkyrAI handles both automatically when you generate your application with ThorAPI!

ThorAPI's RBAC System: Simple But Powerful​

Our RBAC system secures your app at the API level - the most secure approach possible. Here's how it works:

1. Users and Roles​

When ThorAPI generates your app, it automatically creates:

  • A User model with secure password handling
  • A Role system with customizable permission levels
  • Default roles like "Admin," "User," and "Guest"

2. Object-Level Security​

Unlike basic systems that only control page access, our RBAC goes deeper:

  • Each object (Product, Order, Comment, etc.) has permission rules
  • You can control who can view, create, edit, or delete specific objects
  • Permissions cascade through relationships (e.g., "Users can only see their own Orders")

3. API-Level Enforcement​

Security happens at the deepest level:

  • All security checks happen in the API before any data is sent
  • Even if someone tries to hack your frontend, the backend is still secure
  • Every API request is validated for proper authentication and authorization

Adding Authentication to Your App: The Easy Way​

Here's how to set up authentication with ValkyrAI:

Step 1: Make Sure Authentication is Enabled​

When creating your project:

  1. In the template selection screen, check that "User Authentication" is enabled
  2. ThorAPI will automatically add User and Role models to your spec

Step 2: Customize Your Authentication (Optional)​

You can adjust your authentication settings in the spec:

components:
schemas:
User:
type: object
properties:
id:
type: string
format: uuid
email:
type: string
format: email
password:
type: string
format: password
x-thor-encrypt: true
firstName:
type: string
lastName:
type: string
roles:
type: array
items:
$ref: '#/components/schemas/Role'
required:
- email
- password

Step 3: Define Your Roles​

ThorAPI creates default roles, but you can customize them:

Role:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
enum: [ADMIN, USER, MANAGER, GUEST]
permissions:
type: array
items:
type: string
enum: [CREATE, READ, UPDATE, DELETE]

Step 4: Set Up Object Permissions​

Define which roles can access which objects:

x-thor-permissions:
Product:
ADMIN: [CREATE, READ, UPDATE, DELETE]
MANAGER: [CREATE, READ, UPDATE]
USER: [READ]
GUEST: [READ]
Order:
ADMIN: [READ, UPDATE, DELETE]
MANAGER: [READ, UPDATE]
USER: [CREATE, READ, UPDATE]
GUEST: []

Step 5: Add Login/Signup UI​

After generation, ask ValorIDE to create the user interface:

Create login and signup pages with email and password fields.
Add a user profile page where users can see their information.
Make sure the navbar shows "Login" when users aren't logged in,
and their name with a dropdown menu when they are logged in.

ValorIDE will use the ThorAPI-generated authentication services to create these pages!

How It Works Behind the Scenes​

When you build with ValkyrAI, here's what happens:

  1. ThorAPI generates:

    • Database tables for Users and Roles
    • Secure password encryption and storage
    • JWT (JSON Web Token) authentication
    • API endpoints for login, signup, etc.
    • Permission validation on all API calls
  2. ValorIDE uses these components to build:

    • Login/signup forms
    • User profile management
    • Role-based UI elements (showing/hiding based on permissions)

Advanced Authentication Features​

As your app grows, you might want to add:

Single Sign-On (SSO)​

Ask ValorIDE:

Add Google and Facebook login options to the login page.

Multi-Factor Authentication​

Ask ValorIDE:

Add two-factor authentication using SMS codes.

Custom Permission Logic​

Ask ValorIDE:

Make it so managers can only edit products they created themselves.

Best Practices for App Security​

  1. Always use HTTPS for your deployed application
  2. Never store sensitive data in local storage or cookies
  3. Set appropriate permissions - start restrictive and open up as needed
  4. Validate all user input on both frontend and backend
  5. Use auto-logout for inactive sessions

Next Steps​

Now that you have authentication working, you might want to:

Remember: With ValkyrAI, security isn't an afterthought - it's built into every app from the beginning!