zoukankan      html  css  js  c++  java
  • 控制用户创建课程权限

    起因

    默认情况下,Studio的注册用户都可以创建课程,这种默认行为似乎并不是通常的使用场景,平台拥有者更倾向于做个审核,才允许用户发布课程

    思路

    读wiki啊!!

    对于折腾edX的新手而言,我觉得首要的工作就两点:
    1. 让平台跑起来
    2. 通读wiki(configuration wikiedx-platform wiki)

    如果你通读了wiki,起步阶段的多数的问题其实都不成问题。

    解决方案

    据说现在流行送鸡汤必须赠勺,我就写下可操作的解决方案好了。
    跟官方的教程基本一样,官方wiki里有几处不够清晰,我加了自己的理解,没有直接翻译,没有完全按照它们的做法,在本地测试可用,你想按照wiki里的做法,可以自行阅读文后英文wiki。或者跟我往下做也行,有问题给我发邮件 : )

    方法一

    一些概念

    首先得区分django站点级别的is_staff和课程级别的course staff的区别,前者拥有站点内容编辑权限(好比登录admin),而后者只是作为课程团队成员,拥有的编辑课程内容的权限,是application级别的 (不理解也没啥关系)

    只允许被标记为is_staff的用户创建课程

    经过以下设置,课程团队成员(course staff)依然可以编辑课程内容,而创建课程则需要被审核为is_staff的用户才可.这在逻辑上也好理解,只要平台认可的内部成员才有创建课程的权限
    至于如何设置用户的is_staff为yes,则需要使用管理员账户登录到admin,更改auth表就行(/admin/auth/user)

    禁止一般用户创建课程

    cd /edx/app/edxapp/edx-platform
    更改 edx-platform/cms/envs/common.py 在FEATURES里添加'DISABLE_COURSE_CREATION': True

    将用户标记为is_staff

    ./manage.py lms set_staff emailaddress 
    以上是命令行版本,我更喜欢直接去admin里标记:使用超级账号登录到admin,然后进入auth用户表(/admin/auth/user),选择相应用户,勾选对应选项就行

    设置联系邮箱

    如否你做了以上设置,那么一般注册用户默认就没法创建课程,而他又确实想创建,他怎么请求你把他标记为is_staff?
    cd /edx/app/edxapp/edx-platform
    更改 edx-platform/cms/envs/common.py 在FEATURES里添加'STUDIO_REQUEST_EMAIL':YOUR_EMAIL_ADDRESS,这个邮箱将收到用户的请求

    重启edxapp

    sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf restart edxapp:

    ps : birch版本有些不同,改为:sudo /edx/bin/supervisorctl restart edxapp:

    方法二:

    方法一感觉有些hack,以下这个方案来得似乎更优雅些

    选择性地允许课程创建

    已被标记为is_staff的用户,不受以下方法影响,永远可以创建课程

    启用课程创建权限

    cd /edx/app/edxapp/edx-platform
    更改 edx-platform/cms/envs/common.py 在FEATURES里添加'ENABLE_CREATOR_GROUP': True 需要注意的是,如果采用这个方案,方案一中提到的DISABLE_COURSE_CREATION不应当为True,因为DISABLE_COURSE_CREATION的优先级更高

    cd /edx/app/edxapp/edx-platform
    # 更新数据库
    sudo -u www-data /edx/bin/python.edxapp ./manage.py cms syncdb --migrate --settings aws --migrate –noinput
    # 重启edxapp, birch版本有些不同,改为:sudo /edx/bin/supervisorctl  restart edxapp: 
    sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf restart edxapp: 
    

    用户工作流

    如果将ENABLE_CREATOR_GROUP设置为true,一个新的Studio用户的工作流是这样的:

    1. 用户创建新账号,他们在admin table中的状态是“未请求”.
    2. 当用户进入到Studio面板中,他们将看到一条关于如何成为课程创建者的消息
    3. 用户可以发送创建课程的请求,如此一来他们的状态变成"待决定"。
    4. 如果他们的请求被通过,他们将收到一封通知邮件
    5. 如果请求没通过,他们也将收到一封通知邮件

    课程创建者管理

    对应的管理地址是/admin/course_creators/coursecreator/

    设置联系邮箱

    和方法一相同

    处理既有的课程创建者

    如果你希望给既有课程创建者授权,可通过这条指令./manage.py cms populate_creators(嗯,你首先当然得在edx-platform目录下)

  • 相关阅读:
    SEM关键词的三种分类方式
    分分钟解决 MySQL 查询速度慢与性能差
    为什么notify(), wait()等函数定义在Object中,而不是Thread中
    wait(), notify(), notifyAll()等方法介绍
    Java中的Volatile和synchronized的区别
    史上最简单的 SpringCloud 教程
    如何用git将项目代码上传到github
    常见排序
    【CodeForces】9B-Running Student
    【CodeForces】9A-Die Roll
  • 原文地址:https://www.cnblogs.com/zhaojianwei/p/4666808.html
Copyright © 2011-2022 走看看