joomla源代码探析续(二十六)JUser对象和用户权限判断

每一个访问Joomla网站的用户都对应这一个JUser对象,通过$user =& JFactory::getUser() 就可以获得这个对象引用并访问对象的成员函数和属性。

下面的代码就是显示用户的名称,邮件的一段代码:

echo "<p>Your name is {$user->name}, your email is {$user->email}, and your username is {$user->username}</p>";
echo "<p>Your usertype is {$user->usertype} which has a group id of {$user->gid}.</p>";

我们来看看JUser的属性和成员函数:

id - 用户唯一编号 
name - 姓名
username - 帐号
email - 邮件
password - 密码
password_clear - 用户修改密码的时候设置真 
usertype - 用户类型(Super Administrator, Editor) 
gid - 用户的类型id ,与usertype对应 
block - 是否被阻止,如果阻止就设为1 
registerDate - 注册日期
lastvisitDate - 最后一次登录日期
guest - 如果用户未登录就设置为1,其他以上的字段都设置为空

以上的属性都可以直接访问,如果想获取数据库中其他的参数,可以通过getParam函数来获得,下面的代码获取的用户的语言参数:

$user =& JFactory::getUser();
$language = $user->getParam('language', 'the default');

echo "<p>Your language is set to {$language}.</p>";

通常判断用户是否登录都是通过guest来判断的,当然通过id是否大于0也可以。


用户访问权限

不同的Joomla用户可能会有不同的权限,可以通过authorize()成员函数来判断一个用户是否具有执行某项任务的权利。authorize()有四个参数,第一个是我们要验证组件或者函数,第二个是任务,第三,四个分别是记录类型record types和ownership respectively相对关系,(英文很清晰,中文怎么这么难懂)。

libraries/joomla/user/authorization.php文件中包含了所有的用户权限项。我们来看下面的代码:

$user =& JFactory::getUser();
if ($user->authorize('com_content', 'edit', 'content', 'all')) {
 echo "<p>You may edit all content.</p>";
} else {
 echo "<p>You may not edit all content.</p>";
}
if ($user->authorize('com_content', 'publish', 'content', 'own')) {
 echo "<p>You may publish your own content.</p>";
} else {
 echo "<p>You may not publish your own content.</p>";
}


上面的第一段代码就是判断用户是否可以编辑所有的文章,第二段则是判断是否可以发布自己的文章。

如果你自己开发了扩展,标准的权限也许并不合适你,那么你还可以添加自定义的权限项。以下是添加权限的代码例子:

$auth =& JFactory::getACL();
$auth->addACL('com_userinfo15', 'persuade', 'users', 'super administrator');
$auth->addACL('com_userinfo15', 'persuade', 'users', 'administrator');
$auth->addACL('com_userinfo15', 'persuade', 'users', 'manager');
$user =& JFactory::getUser();
if ($user->authorize('com_userinfo15', 'persuade')) {
 echo "<p>You may persuade the system to do what you wish.</p>";
} else {
 echo "<p>You are not very persuasive.</p>";
}


在我们自己的扩展中,进入组件或者插件的前部,就写如这样的代码,就可以判断是否有访问和执行某项任务的权限了权限了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值