svnhooks--单次提交的实现,提交后取消用户提交权限

上一篇文章说到了,通过给用户提交权限,那么这个改变权限我们想做成单次的,授予了一次权限以后,如果用户提交了一个svn,那么就需要把权限给重新设置不可提交,那么我们可以通过svn的post-commit来完成。

关于svn的hook,可以在之前的文章查看,这里就不累赘了

下面是post-commit的核心代码,post-commit就是在用户提交完文件后执行的,代码主要就是获取了本次提交的作者,然后发送给服务器做一次权限变更操作

#!/bin/sh
REPOS="$1"
REV="$2"
SVNLOOK=/usr/bin/svnlook

# 获取提交者
AUTHOR=$($SVNLOOK author -r $REV $REPOS)

# 发送提交者信息到程序接口
AUTHOR_API_URL="http://xxxx:5000/set_false"  # 替换为你的程序接口 URL
AUTHOR_JSON_PAYLOAD=$(cat <<EOF
{
  "author": "$AUTHOR"
}
EOF
)

# 发送提交者信息
curl -X POST "$AUTHOR_API_URL" -H 'Content-Type: application/json' -d "$AUTHOR_JSON_PAYLOAD" 


exit 0

下面就是服务器set_false方法,主要就是把收到的参数和本身的用户做一个对比,有数据的话就把value设成False,然后刷新页面

#提交完成后,把用户的权限设置成不可提交,实现单次提交权限
@app.route('/set_false', methods=['POST'])
def set_false():
    author = request.json.get('author')

    if author in users2:
        users2[author] = False
        socketio.emit('refresh_page')
        return jsonify({author: users2[author], 'message': '提交完成,提交权限取消'}), 200
    else:
        return jsonify({'error': 'Key not found'}), 404

这样就可以实现了用户提交了一次代码后,就取消掉权限

posted @ 2024-09-02 16:59  Hiro-D  阅读(5)  评论(0编辑  收藏  举报