diff --git a/dashboard/jumpserver/settings.py b/dashboard/jumpserver/settings.py index a20717142..898362e82 100644 --- a/dashboard/jumpserver/settings.py +++ b/dashboard/jumpserver/settings.py @@ -126,3 +126,5 @@ STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), ) + +AUTH_USER_MODEL = 'users.User' diff --git a/dashboard/users/migrations/0001_initial.py b/dashboard/users/migrations/0001_initial.py new file mode 100644 index 000000000..1f7be6ac9 --- /dev/null +++ b/dashboard/users/migrations/0001_initial.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-08-09 17:23 +from __future__ import unicode_literals + +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0008_alter_user_username_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.ASCIIUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=30, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ], + options={ + 'abstract': False, + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='Group', + fields=[ + ('group_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='auth.Group')), + ('comment', models.CharField(blank=True, max_length=80)), + ], + bases=('auth.group',), + ), + migrations.AddField( + model_name='user', + name='groups', + field=models.ManyToManyField(to='users.Group'), + ), + migrations.AddField( + model_name='user', + name='user_permissions', + field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'), + ), + ] diff --git a/dashboard/users/models.py b/dashboard/users/models.py index bd4b2abe9..cbbdec411 100644 --- a/dashboard/users/models.py +++ b/dashboard/users/models.py @@ -1,5 +1,21 @@ from __future__ import unicode_literals from django.db import models +from django.contrib.auth.models import AbstractUser +from django.contrib.auth.models import Group as AbstractGroup -# Create your models here. + +class Group(AbstractGroup): + comment = models.CharField(max_length=80, blank=True) + + +class User(AbstractUser): + + groups = models.ManyToManyField(Group) + + @property + def name(self): + return self.first_name + self.last_name + + class Meta: + db_table = 'user' diff --git a/docs/README.md b/docs/README.md index 8f1ba473d..ffce0876b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,2 +1,2 @@ ## [代码规范](/jumpserver/jumpserver/blob/master/docs/code_style.md) -## [项目结构](/jumpserver/jumpserver/blob/master/docs/project_structure.md) +## [项目结构](/jumpserver/jumpserver/blob/master/docs/project_structure.md) \ No newline at end of file diff --git a/docs/project_structure.md b/docs/project_structure.md index 80f0b4636..68bc6edbd 100644 --- a/docs/project_structure.md +++ b/docs/project_structure.md @@ -38,5 +38,4 @@ │ │ └── wsgi.py │ ├── manage.py │ ├── static // 项目静态资源目录 -│ └── templates // 项目模板目录 -``` +│ └── templates \ No newline at end of file