update user model for create application user

pull/530/head
ibuler 2016-12-21 01:17:36 +08:00
parent 589b6d7cfe
commit 875aaa0029
2 changed files with 17 additions and 2 deletions

View File

@ -7,6 +7,7 @@ from collections import OrderedDict
from django.contrib.auth.hashers import make_password from django.contrib.auth.hashers import make_password
from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import AbstractUser
from django.core import signing from django.core import signing
from django.conf import settings
from django.db import models, IntegrityError from django.db import models, IntegrityError
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils import timezone from django.utils import timezone
@ -14,7 +15,7 @@ from django.shortcuts import reverse
from rest_framework.authtoken.models import Token from rest_framework.authtoken.models import Token
from common.utils import signer, date_expired_default from common.utils import signer, date_expired_default
from . import UserGroup from . import UserGroup, AccessKey
__all__ = ['User'] __all__ = ['User']
@ -24,7 +25,7 @@ class User(AbstractUser):
ROLE_CHOICES = ( ROLE_CHOICES = (
('Admin', _('Administrator')), ('Admin', _('Administrator')),
('User', _('User')), ('User', _('User')),
('APP', _('Application')) ('App', _('Application'))
) )
username = models.CharField(max_length=20, unique=True, verbose_name=_('Username')) username = models.CharField(max_length=20, unique=True, verbose_name=_('Username'))
@ -45,6 +46,8 @@ class User(AbstractUser):
verbose_name=_('Date expired')) verbose_name=_('Date expired'))
created_by = models.CharField(max_length=30, default='', verbose_name=_('Created by')) created_by = models.CharField(max_length=30, default='', verbose_name=_('Created by'))
@property @property
def password_raw(self): def password_raw(self):
raise AttributeError('Password raw is not a readable attribute') raise AttributeError('Password raw is not a readable attribute')
@ -173,6 +176,15 @@ class User(AbstractUser):
'date_expired': self.date_expired.strftime('%Y-%m-%d %H:%M:%S') 'date_expired': self.date_expired.strftime('%Y-%m-%d %H:%M:%S')
}) })
@classmethod
def create_app_user(cls, name, comment):
domain_name = settings.DOMAIN_NAME or 'jumpserver.org'
app = cls.objects.create(username=name, name=name, email='%s@%s' % (name, domain_name),
role='App', enable_otp=False, comment=comment, is_first_login=False,
created_by='System')
AccessKey.object.create(user=app)
return app
@classmethod @classmethod
def validate_reset_token(cls, token): def validate_reset_token(cls, token):
try: try:

View File

@ -26,6 +26,9 @@ class Config:
# HTTP_PROTOCOL://HOST[:PORT] # HTTP_PROTOCOL://HOST[:PORT]
SITE_URL = 'http://localhost' SITE_URL = 'http://localhost'
# Domain name, If set app email will set as it
DOMAIN_NAME = 'jumpserver.org'
# Django security setting, if your disable debug model, you should setting that # Django security setting, if your disable debug model, you should setting that
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']