User

Classes for representing a user

Technology

The user module provides user management functionality for Project Forge applications. It handles user authentication, profiles, session management, and provides both filesystem-based and database-backed user storage options.

Overview

This module provides:

Key Features

User Management

Storage Options

Integration

Package Structure

Core Components

Storage Implementations

Configuration

Default User Model

The module provides a basic user model with required fields:

1
2
3
4
5
6
type User struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
Created time.Time `json:"created"`
Updated *time.Time `json:"updated,omitzero"`
}

Custom User Models

For database-backed users, create an export model at ./.projectforge/export/models/user.json:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
"name": "user",
"package": "user",
"description": "A user of the system",
"icon": "profile",
"columns": [
{
"name": "id",
"type": "uuid",
"pk": true,
"search": true
},
{
"name": "name",
"type": "string",
"search": true,
"tags": ["title"]
},
{
"name": "email",
"type": "string",
"nullable": true,
"search": true
},
{
"name": "created",
"type": "timestamp",
"sqlDefault": "now()",
"tags": ["created"]
},
{
"name": "updated",
"type": "timestamp",
"nullable": true,
"sqlDefault": "now()",
"tags": ["updated"]
}
]
}

Required Fields: id and name are required for all user models.

Dependencies

Required Modules

Optional Modules

Usage Examples

Basic User Operations

1
2
3
4
5
6
7
8
9
// Create a new user
user := &user.User{
ID: uuid.New(),
Name: "John Doe",
Created: util.TimeCurrent(),
}

// Save user (implementation depends on storage backend)
err := userService.Save(ctx, user)

Session Integration

1
2
3
4
5
6
7
8
// Get current user from session
currentUser := session.GetUser(ps)
if currentUser == nil {
// Handle anonymous user
}

// Update user in session
session.SetUser(ps, updatedUser)

Source Code

See Also