ubase

module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2025 License: MIT

README

UBase - User and Role Management System

UBase is a Go-based framework for managing users, roles, and permissions with support for multiple database backends and event-driven architecture.

Features

  • User Management:

    • Create, update, and retrieve users
    • Email-based authentication
    • Password hashing with Argon2id
    • Login attempt tracking
  • Role-Based Access Control:

    • Role creation and management
    • Permission assignment to roles
    • User-role assignment
  • Database Support:

    • PostgreSQL adapter
    • SQLite adapter
    • Database migrations
    • Common interface for multiple backends
  • Security:

    • AES encryption/decryption
    • Secure random generation
    • Password hashing with configurable parameters
  • Event System:

    • User events (created, updated, login)
    • Role events (created, permissions changed)
    • Extensible event types
  • Utilities:

    • LRU Cache implementation
    • Priority Queue
    • CLI command framework
    • Validation helpers

Getting Started

Prerequisites
  • Go 1.18+
  • PostgreSQL or SQLite (depending on your backend choice)
Installation
go get github.com/your-repo/ubase

Configuration

Configure your database connection via environment variables:

  • DB_TYPE: "postgres" or "sqlite"
  • DB_DSN: Connection string for your database

TODO: Example is sketchy. Need to improve.

Usage Example

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/your-repo/ubase/lib/dbinterface"
	"github.com/your-repo/ubase/lib/dbinterface/postgres_adapter"
)

func main() {
	// Initialize database adapter
	db := /* your database connection */
	adapter := postgres_adapter.NewPostgresAdapter(db)

	// Create a new user
	err := adapter.AddUser(context.Background(), 1, "John", "Doe", "johndoe", "john@example.com")
	if err != nil {
		log.Fatal(err)
	}

	// Retrieve user
	user, err := adapter.GetUser(context.Background(), 1)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("User: %+v\n", user)
}

License

MIT

Directories

Path Synopsis
internal
evercoregen
Code generated by evercore; DO NOT EDIT.
Code generated by evercore; DO NOT EDIT.
evercoregen/aggregates
Code generated by evercore; DO NOT EDIT.
Code generated by evercore; DO NOT EDIT.
evercoregen/events
Code generated by evercore; DO NOT EDIT.
Code generated by evercore; DO NOT EDIT.
lib
ubalgorithms
The algorithms package contains useful data structures for re-use
The algorithms package contains useful data structures for re-use
ubsecurity
Security related tools.
Security related tools.
sql

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL