Sock Chat extensions
This commit is contained in:
parent
a83f19d245
commit
9341f904d8
5 changed files with 138 additions and 53 deletions
|
@ -18,6 +18,7 @@ require_once $sockSakuraPath .'/sakura.php';
|
||||||
use sockchat\Auth;
|
use sockchat\Auth;
|
||||||
use Sakura\Session;
|
use Sakura\Session;
|
||||||
use Sakura\Users;
|
use Sakura\Users;
|
||||||
|
use Sakura\SockChat;
|
||||||
|
|
||||||
if(Auth::getPageType() == AUTH_FETCH) {
|
if(Auth::getPageType() == AUTH_FETCH) {
|
||||||
|
|
||||||
|
@ -45,7 +46,7 @@ if(Auth::getPageType() == AUTH_FETCH) {
|
||||||
$rank = Users::getRank($user['rank_main']);
|
$rank = Users::getRank($user['rank_main']);
|
||||||
|
|
||||||
// Deny group and user id 0
|
// Deny group and user id 0
|
||||||
if($user['id'] == 0 || $rank['id'] == 0) {
|
if($user['id'] == 0 || $rank['id'] == 0 || $user['password_algo'] == 'nologin') {
|
||||||
|
|
||||||
Auth::Deny();
|
Auth::Deny();
|
||||||
Auth::Serve();
|
Auth::Serve();
|
||||||
|
@ -53,62 +54,34 @@ if(Auth::getPageType() == AUTH_FETCH) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set the user's data
|
||||||
Auth::SetUserData(
|
Auth::SetUserData(
|
||||||
$user['id'],
|
$user['id'],
|
||||||
$user['username'],
|
$user['username'],
|
||||||
$user['name_colour'] == null ? $rank['colour'] : $user['name_colour']
|
$user['name_colour'] == null ? $rank['colour'] : $user['name_colour']
|
||||||
);
|
);
|
||||||
|
|
||||||
switch($rank['id']) {
|
// Get the user's permissions
|
||||||
|
$perms = SockChat::getUserPermissions($user['id']);
|
||||||
|
|
||||||
default: // Fallback
|
// Check if they can access the chat
|
||||||
case 2: // Regular User
|
if(!$perms['access']) {
|
||||||
Auth::SetCommonPermissions(
|
|
||||||
0,
|
|
||||||
USER_NORMAL,
|
|
||||||
LOGS_DISABLED,
|
|
||||||
NICK_DISABLED,
|
|
||||||
CHANNEL_CREATE_DISABLED
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 6: // Bot
|
|
||||||
case 8: // Tenshi
|
|
||||||
case 9: // Alumni
|
|
||||||
Auth::SetCommonPermissions(
|
|
||||||
1,
|
|
||||||
USER_NORMAL,
|
|
||||||
LOGS_ENABLED,
|
|
||||||
NICK_ENABLED,
|
|
||||||
CHANNEL_CREATE_TEMP
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: // Site Moderator
|
|
||||||
case 5: // Developer
|
|
||||||
case 6: // Chat Moderator
|
|
||||||
Auth::SetCommonPermissions(
|
|
||||||
($rank['id'] == 2 ? 3 : 2), // Site moderators are 3, rest is 2
|
|
||||||
USER_MODERATOR,
|
|
||||||
LOGS_ENABLED,
|
|
||||||
NICK_ENABLED,
|
|
||||||
CHANNEL_CREATE_TEMP
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4: // Administrator
|
|
||||||
Auth::SetCommonPermissions(
|
|
||||||
4,
|
|
||||||
USER_MODERATOR,
|
|
||||||
LOGS_ENABLED,
|
|
||||||
NICK_ENABLED,
|
|
||||||
CHANNEL_CREATE_PERM
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
Auth::Deny();
|
||||||
|
Auth::Serve();
|
||||||
|
exit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set the common permissions
|
||||||
|
Auth::SetCommonPermissions(
|
||||||
|
$perms['rank'],
|
||||||
|
$perms['type'],
|
||||||
|
$perms['logs'],
|
||||||
|
$perms['nick'],
|
||||||
|
$perms['channel']
|
||||||
|
);
|
||||||
|
|
||||||
Auth::Accept();
|
Auth::Accept();
|
||||||
|
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -16,7 +16,8 @@
|
||||||
"20150427.5",
|
"20150427.5",
|
||||||
"20150427.6",
|
"20150427.6",
|
||||||
"20150427.7",
|
"20150427.7",
|
||||||
"20150427.8"
|
"20150427.8",
|
||||||
|
"20150428"
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -804,6 +805,23 @@
|
||||||
"change": "Abyss'd user's names still showing up in the title of the profile."
|
"change": "Abyss'd user's names still showing up in the title of the profile."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
"20150428": [
|
||||||
|
|
||||||
|
{
|
||||||
|
"type": "ADD",
|
||||||
|
"change": "Add base Sock Chat extensions."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "REM",
|
||||||
|
"change": "Removed remains of old templating system."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "UPD",
|
||||||
|
"change": "Move Sock Chat permissioning to database as opposed to a static file."
|
||||||
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,8 @@ namespace Sakura;
|
||||||
|
|
||||||
class Main {
|
class Main {
|
||||||
|
|
||||||
public static $_TPL;
|
public static $_MD; // Markdown class container
|
||||||
public static $_MD;
|
public static $_IN_MANAGE = false; // Manage thing
|
||||||
public static $_IN_MANAGE = false;
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
public static function init($config) {
|
public static function init($config) {
|
||||||
|
|
|
@ -7,6 +7,100 @@ namespace Sakura;
|
||||||
|
|
||||||
class SockChat {
|
class SockChat {
|
||||||
|
|
||||||
|
// Permission indexes
|
||||||
|
public static $_PERMS_ACCESS_INDEX = 0;
|
||||||
|
public static $_PERMS_RANK_INDEX = 1;
|
||||||
|
public static $_PERMS_TYPE_INDEX = 2;
|
||||||
|
public static $_PERMS_LOGS_INDEX = 3;
|
||||||
|
public static $_PERMS_NICK_INDEX = 4;
|
||||||
|
public static $_PERMS_CHANNEL_INDEX = 5;
|
||||||
|
|
||||||
|
// Fallback permission row
|
||||||
|
public static $_PERMS_FALLBACK = [1, 0, 0, 0, 0, 0];
|
||||||
|
|
||||||
|
// Get all permission data
|
||||||
|
public static function getAllPermissions() {
|
||||||
|
|
||||||
|
// Get all data from the permissions table
|
||||||
|
$perms = Database::fetch('sock_perms');
|
||||||
|
|
||||||
|
// Parse permission string
|
||||||
|
foreach($perms as $id => $perm)
|
||||||
|
$perms[$id]['perms'] = self::parsePerms($perm['perms']);
|
||||||
|
|
||||||
|
// Return the permission data
|
||||||
|
return $perms;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get permission data for a specific rank
|
||||||
|
public static function getRankPermissions($rid) {
|
||||||
|
|
||||||
|
// Get data by rank id from permissions table
|
||||||
|
$perms = Database::fetch('sock_perms', false, ['rid' => [$rid, '='], 'uid' => [0, '=']]);
|
||||||
|
|
||||||
|
// Check if we got a row back
|
||||||
|
if(empty($perms)) {
|
||||||
|
$perms = [
|
||||||
|
'rid' => 0,
|
||||||
|
'uid' => 0,
|
||||||
|
'perms' => self::$_PERMS_FALLBACK
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse permission string
|
||||||
|
$perms = self::parsePerms($perms['perms']);
|
||||||
|
|
||||||
|
// Return the permission data
|
||||||
|
return $perms;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get all rank permission data
|
||||||
|
public static function getUserPermissions($uid) {
|
||||||
|
|
||||||
|
// Get data by user id from permissions table
|
||||||
|
$perms = Database::fetch('sock_perms', false, ['uid' => [$uid, '='], 'rid' => [0, '=']]);
|
||||||
|
|
||||||
|
// Check if we got a row back
|
||||||
|
if(empty($perms)) {
|
||||||
|
|
||||||
|
// If we didn't get the user's rank account row
|
||||||
|
$user = Users::getUser($uid);
|
||||||
|
|
||||||
|
// Then return the data for their rank
|
||||||
|
return self::getRankPermissions($user['rank_main']);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse permission string
|
||||||
|
$perms = self::parsePerms($perms['perms']);
|
||||||
|
|
||||||
|
// Return the permission data
|
||||||
|
return $perms;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse permission string
|
||||||
|
public static function parsePerms($perms) {
|
||||||
|
|
||||||
|
// Explode the commas
|
||||||
|
$exploded = is_array($perms) ? $perms : explode(',', $perms);
|
||||||
|
|
||||||
|
// "Reset" $perms
|
||||||
|
$perms = array();
|
||||||
|
|
||||||
|
// Put the data in the correct order
|
||||||
|
$perms['access'] = $exploded[ self::$_PERMS_ACCESS_INDEX ];
|
||||||
|
$perms['rank'] = $exploded[ self::$_PERMS_RANK_INDEX ];
|
||||||
|
$perms['type'] = $exploded[ self::$_PERMS_TYPE_INDEX ];
|
||||||
|
$perms['logs'] = $exploded[ self::$_PERMS_LOGS_INDEX ];
|
||||||
|
$perms['nick'] = $exploded[ self::$_PERMS_NICK_INDEX ];
|
||||||
|
$perms['channel'] = $exploded[ self::$_PERMS_CHANNEL_INDEX ];
|
||||||
|
|
||||||
|
// Return formatted permissions array
|
||||||
|
return $perms;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
namespace Sakura;
|
namespace Sakura;
|
||||||
|
|
||||||
// Define Sakura version
|
// Define Sakura version
|
||||||
define('SAKURA_VERSION', '20150427.8');
|
define('SAKURA_VERSION', '20150428');
|
||||||
define('SAKURA_VLABEL', 'Heliotrope');
|
define('SAKURA_VLABEL', 'Heliotrope');
|
||||||
define('SAKURA_VTYPE', 'Development');
|
define('SAKURA_VTYPE', 'Development');
|
||||||
define('SAKURA_COLOUR', '#DF73FF');
|
define('SAKURA_COLOUR', '#DF73FF');
|
||||||
|
@ -36,6 +36,7 @@ require_once ROOT .'_sakura/components/Templates.php';
|
||||||
require_once ROOT .'_sakura/components/Sessions.php';
|
require_once ROOT .'_sakura/components/Sessions.php';
|
||||||
require_once ROOT .'_sakura/components/Users.php';
|
require_once ROOT .'_sakura/components/Users.php';
|
||||||
require_once ROOT .'_sakura/components/Whois.php';
|
require_once ROOT .'_sakura/components/Whois.php';
|
||||||
|
require_once ROOT .'_sakura/components/SockChat.php';
|
||||||
|
|
||||||
// Generate path to database driver
|
// Generate path to database driver
|
||||||
$_DBNGNPATH = ROOT .'_sakura/components/database/'. $sakuraConf['db']['driver'] .'.php';
|
$_DBNGNPATH = ROOT .'_sakura/components/database/'. $sakuraConf['db']['driver'] .'.php';
|
||||||
|
|
Reference in a new issue