Skip to content

miniscruff/scopie-js

Repository files navigation

Scopie

NPM Version NPM Downloads

Javascript implementation of scopie.

Example

import { isAllowed } from "scopie";

const users = {
    elsa: {
        rules: ["allow/blog/create|update"],
    },
    bella: {
        rules: ["allow/blog/create"],
    },
]
const blogPosts = {}

function createBlog(username, blogSlug, blogContent) {
    const user = users[username]
    if (isAllowed(["blog/create"], user.rules)) {
        blogPosts[blogSlug] = {
            author: user,
            content: blogContent,
        }
    }
}

function updateBlog(username, blogSlug, blogContent) {
    const user = users[username]
    if (isAllowed(["blog/update"], user.rules)) {
        blogPosts[blogSlug] = {
            author: user,
            content: blogContent,
        }
    }
}
import { isAllowed } from "scopie";

type User = {
    rules: Array<string>;
};

type BlogPost = {
    author: User;
    content: string;
}

type UserStore = {
    [key: string]: User
}

type BlogStore = {
    [key: string]: BlogPost
}

const users: UserStore = {
    elsa: {
        rules: ["allow/blog/create|update"],
    },
    bella: {
        rules: ["allow/blog/create"],
    },
}

const blogPosts: BlogStore = {}

function createBlog(username: string, blogSlug: string, blogContent: string) {
    const user = users[username]
    if (isAllowed(["blog/create"], user.rules)) {
        blogPosts[blogSlug] = {
            author: user,
            content: blogContent,
        }
    }
}

function updateBlog(username: string, blogSlug: string, blogContent: string) {
    const user = users[username]
    if (isAllowed(["blog/update"], user.rules)) {
        blogPosts[blogSlug] = {
            author: user,
            content: blogContent,
        }
    }
}

About

JS implementation of scopie

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •