mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-29 13:49:28 +08:00

* Check For Subject During Adding Policies Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Make Object to be Group ID Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix Tests Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Change from string to bool Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Update Tests Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * When it is Admin Don't Check Subject Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Minor Refractoring Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Group Constants Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Test if User Doesn't Have Policy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Combine Share Things Cases Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Remove Unnecessary Case Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Check For Non NIL error Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Remove 3 Cases From Bool Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add Listing Actions Incase of Sharing Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Capitalize comments Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Move AdminRelationKeys to Tests Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix Tests After Rebase Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Rename myKey Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Simplify checkSubject Signed-off-by: rodneyosodo <blackd0t@protonmail.com> --------- Signed-off-by: rodneyosodo <blackd0t@protonmail.com>
71 lines
2.2 KiB
Go
71 lines
2.2 KiB
Go
// Copyright (c) Mainflux
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package postgres
|
|
|
|
import (
|
|
_ "github.com/jackc/pgx/v5/stdlib" // required for SQL access
|
|
migrate "github.com/rubenv/sql-migrate"
|
|
)
|
|
|
|
// Migration of Users service.
|
|
func Migration() *migrate.MemoryMigrationSource {
|
|
return &migrate.MemoryMigrationSource{
|
|
Migrations: []*migrate.Migration{
|
|
{
|
|
Id: "clients_01",
|
|
// VARCHAR(36) for colums with IDs as UUIDS have a maximum of 36 characters
|
|
// STATUS 0 to imply enabled and 1 to imply disabled
|
|
// Role 0 to imply user role and 1 to imply admin role
|
|
Up: []string{
|
|
`CREATE TABLE IF NOT EXISTS clients (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
name VARCHAR(254),
|
|
owner_id VARCHAR(36),
|
|
identity VARCHAR(254) NOT NULL UNIQUE,
|
|
secret TEXT NOT NULL,
|
|
tags TEXT[],
|
|
metadata JSONB,
|
|
created_at TIMESTAMP,
|
|
updated_at TIMESTAMP,
|
|
updated_by VARCHAR(254),
|
|
status SMALLINT NOT NULL DEFAULT 0 CHECK (status >= 0),
|
|
role SMALLINT DEFAULT 0 CHECK (status >= 0)
|
|
)`,
|
|
`CREATE TABLE IF NOT EXISTS groups (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
parent_id VARCHAR(36),
|
|
owner_id VARCHAR(36) NOT NULL,
|
|
name VARCHAR(254) NOT NULL,
|
|
description VARCHAR(1024),
|
|
metadata JSONB,
|
|
created_at TIMESTAMP,
|
|
updated_at TIMESTAMP,
|
|
updated_by VARCHAR(254),
|
|
status SMALLINT NOT NULL DEFAULT 0 CHECK (status >= 0),
|
|
UNIQUE (owner_id, name),
|
|
FOREIGN KEY (parent_id) REFERENCES groups (id) ON DELETE CASCADE
|
|
)`,
|
|
`CREATE TABLE IF NOT EXISTS policies (
|
|
owner_id VARCHAR(36) NOT NULL,
|
|
subject VARCHAR(36) NOT NULL,
|
|
object VARCHAR(36) NOT NULL,
|
|
actions TEXT[] NOT NULL,
|
|
created_at TIMESTAMP,
|
|
updated_at TIMESTAMP,
|
|
updated_by VARCHAR(254),
|
|
FOREIGN KEY (subject) REFERENCES clients (id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
FOREIGN KEY (object) REFERENCES groups (id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
PRIMARY KEY (subject, object)
|
|
)`,
|
|
},
|
|
Down: []string{
|
|
`DROP TABLE IF EXISTS clients`,
|
|
`DROP TABLE IF EXISTS groups`,
|
|
`DROP TABLE IF EXISTS policies`,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
}
|