, 당신은 그것을 조금 해킹 할 수
@auth.requires_membership('admin')
def register()
admin_auth = session.auth
auth.is_logged_in = lambda: False
def post_register(form):
session.auth = admin_auth
auth.user = session.auth.user
auth.settings.register_onaccept = post_register
return dict(form=auth.register())
일반적으로 Auth.register() 검사 사용자가 로그인 한 경우 프로필 페이지로 리디렉션됩니다. 위의 예는 auth.is_logged_in() 메소드를 False를 반환하는 람다로 대체하므로 리디렉션이 발생하지 않습니다. 또한 Auth.register()는 session.auth 및 auth.user를 새로 등록 된 사용자와 관련된 값으로 설정하므로 위 코드는 admin의 값을 저장하고 register_onaccept 콜백을 사용하여 session.auth 및 auth.user를 관리자의 값으로 복원합니다. 당신이이긴 경우에, 그러나
@auth.requires_membership('admin')
def register():
form = SQLFORM(db.auth_user)
if form.validate():
admin_user = auth.user
auth.get_or_create_user(form.vars)
auth.user = admin_user
return dict(form=form)
:
또 다른 방법은 단순히 db.auth_user 테이블을 기반으로 자신의 등록 양식을 작성하고 새 사용자를 추가 할 Auth.get_or_create_user() 메소드를 사용하는 것입니다 내장 register() 함수가 자동으로 등록 양식에 추가하는 암호 확인 필드를 가져 오지 못합니다. 내장 된 register() 메소드와 마찬가지로 get_or_create_user()는 auth.user를 새 사용자의 레코드로 설정하기 때문에 삽입 후에 admin 사용자의 레코드로 다시 설정해야합니다.
위의 두 방법 모두 auth.settings.create_user_groups가 True (기본값) 인 경우 새 사용자에 대해 새로운 고유 Auth 그룹을 자동으로 만들고 해당 그룹에 사용자를 할당합니다. 위의 방법 대신 표준 SQLFORM을 사용하여 새 사용자를 추가 할 수 있지만 수동으로 그룹을 만들고 추가해야합니다.
이 옵션을 쉽게 추가해야합니다.
정말 고마워요. –
질문과 답변 모두에게 감사드립니다. –