All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.niccolomattei.api.telegram.permission.PermissionManager Maven / Gradle / Ivy

There is a newer version: 1.4_PRERELEASE-2
Show newest version
package me.niccolomattei.api.telegram.permission;

import me.niccolomattei.api.telegram.Bot;
import me.niccolomattei.api.telegram.User;
import me.niccolomattei.api.telegram.configuration.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Niccolò Mattei on 22/08/2016.
 */
public class PermissionManager {

    private final Configuration permissionConfig;

    public PermissionManager(Bot bot) {
        Configuration.generateDefault("permission.json");
        permissionConfig = new Configuration(Configuration.defaultPath + "permission.json");
    }

    public boolean hasPermission(User user, Permission permission) {
        if (permissionConfig.contains("permission.users." + user.getId()))
            return permissionConfig.getCollectionByClass(String.class, "permission.users." + user.getId()).contains(permission.getPermission());
        return false;
    }

    public List getPermissions(User user) {
        List permissions = new ArrayList<>();

        if (permissionConfig.contains("permission.users." + user.getId())) {
            permissionConfig.getCollectionByClass(String.class, "permission.users." + user.getId()).forEach(a -> permissions.add(new Permission(a)));
        }

        return permissions;
    }

    public void addUserToGroup(User user, String unlocalizedGroupID) {
        if (getPermissionGroup(unlocalizedGroupID) != null) {
            PermissionGroup toSet = getPermissionGroup(unlocalizedGroupID);
            toSet.getUsers().add(user.getId());
            setPermissionGroup(toSet);
        }
    }

    public void removeUserFromGroup(User user, String unlocalizedGroupID) {
        if (getPermissionGroup(unlocalizedGroupID) != null) {
            PermissionGroup toSet = getPermissionGroup(unlocalizedGroupID);
            toSet.getUsers().remove(user.getId());
            setPermissionGroup(toSet);
        }
    }

    public void setUser(User user, Permission... permissions) {
        permissionConfig.set("permission.users." + user.getId(), permissions);
        permissionConfig.save();
    }

    public void setPermissionGroup(PermissionGroup group) {
        permissionConfig.set("permission.groups." + group.getUnlocalizedID() + ".name", group.getName());
        permissionConfig.set("permission.groups." + group.getUnlocalizedID() + ".users", group.getUsers());
        permissionConfig.set("permission.groups." + group.getUnlocalizedID() + ".permissions", group.getPermissions());
        permissionConfig.save();
    }

    public PermissionGroup getPermissionGroup(String unlocalizedID) {
        if (!permissionConfig.contains("permission.groups." + unlocalizedID + ".name")) return null;
        String name = permissionConfig.getString("permission.groups." + unlocalizedID + ".name");
        List users = (List) permissionConfig.getCollectionByClass(Integer.class, "permission.groups." + unlocalizedID + ".users");
        List permissions = new ArrayList<>();

        permissionConfig.getCollectionByClass(String.class, "permission.groups." + unlocalizedID + "").forEach(a -> permissions.add(new Permission(a)));

        PermissionGroup res = new PermissionGroup(unlocalizedID, name, (Permission[]) permissions.toArray());
        res.addUserIds(users.toArray(new Integer[users.size()]));

        return res;
    }

    public PermissionGroup getUserPermissionGroup(int userId) {
        for (String key : permissionConfig.getSection("permission.group").keySet()) {
            PermissionGroup group = getPermissionGroup(key);
            if (group.getUsers().contains(userId)) return group;
        }
        return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy