gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

util.js (1628B)


      1 /*
      2 	GoToSocial
      3 	Copyright (C) GoToSocial Authors admin@gotosocial.org
      4 	SPDX-License-Identifier: AGPL-3.0-or-later
      5 
      6 	This program is free software: you can redistribute it and/or modify
      7 	it under the terms of the GNU Affero General Public License as published by
      8 	the Free Software Foundation, either version 3 of the License, or
      9 	(at your option) any later version.
     10 
     11 	This program is distributed in the hope that it will be useful,
     12 	but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 	GNU Affero General Public License for more details.
     15 
     16 	You should have received a copy of the GNU Affero General Public License
     17 	along with this program.  If not, see <http://www.gnu.org/licenses/>.
     18 */
     19 
     20 "use strict";
     21 
     22 const React = require("react");
     23 const RoleContext = React.createContext([]);
     24 const BaseUrlContext = React.createContext(null);
     25 
     26 function urlSafe(str) {
     27 	return str.toLowerCase().replace(/[\s/]+/g, "-");
     28 }
     29 
     30 function useHasPermission(permissions) {
     31 	const roles = React.useContext(RoleContext);
     32 	return checkPermission(permissions, roles);
     33 }
     34 
     35 function checkPermission(requiredPermissisons, user) {
     36 	// requiredPermissions can be 'false', in which case there are no restrictions
     37 	if (requiredPermissisons === false) {
     38 		return true;
     39 	}
     40 
     41 	// or an array of roles, check if one of the user's roles is sufficient
     42 	return user.some((role) => requiredPermissisons.includes(role));
     43 }
     44 
     45 function useBaseUrl() {
     46 	return React.useContext(BaseUrlContext);
     47 }
     48 
     49 module.exports = {
     50 	urlSafe, RoleContext, useHasPermission, checkPermission, BaseUrlContext, useBaseUrl
     51 };