Example #1
0
def register():
    params = request.get_json()
    mobile = params.get('mobile')
    email = params.get('email')
    nickname = params.get('nickname')
    sex = params.get('sex')
    password = params.get('password')

    if not (email and password):

        return JSONResponse.error('email and password must be provided')
    else:
        user = User.query.filter_by(email=email).first()
        if user:
            return JSONResponse.error('username has already registered!')

        user = User(
                    mobile=mobile,
                    email=email,
                    nickname=nickname,
                    sex=sex,
                    password=generate_password_hash(password)
                    )
        user.save()

        return JSONResponse.success()
Example #2
0
    def handle(self, *args, **options):
        path = options['path'][0]

        list_multiple = []
        list_doesnt_exist = []
        with open(path, 'r') as csvfile:
            spamreader = csv.reader(csvfile, delimiter='	')
            list_wrong_date = []

            for row in spamreader:
                full_name = row[0]
                full_name_list = full_name.split(" ")
                first_name = full_name_list[0].lower()
                last_name = ' '.join(full_name_list[1:]).lower()
                username = row[1].split("@")[0].lower()
                if username == 'contato':
                    username = first_name + last_name.split(" ")[0]
                email = row[1].lower()
                password = '******'

                user = User(first_name=first_name,
                            last_name=last_name,
                            username=username,
                            email=email,
                            password=password)

                user.save()
Example #3
0
def login():
    code = request.values.get("code")
    if code is None:
        # Authorize the client from SSO, redirect as a query with "code"
        sl = "?".join([config.sso_params.get("cootek.authorize"), urlencode(config.authorize_params)])
        return redirect(sl)
    else:
        config.token_params.update({"code": code})
        ret = requests.post(config.sso_params.get("cootek.token"), data=config.token_params)
        token = json.loads(ret.text)
        if "access_token" in token and "id_token" in token:
            # Analyse username from id_token
            user_info = token['id_token'].split(".")[1]
            missing_padding = 4 - len(user_info) % 4
            if missing_padding:
                user_info += '=' * missing_padding
            temp_user_info = base64.b64decode(user_info)
            user_info = json.loads(bytes.decode(temp_user_info))

            username = user_info['upn'].split("@")[0]
            sid = user_info['sid'].split("@")[0]
            token = uuid.uuid4().hex
            user = User.query.filter_by(username=username).first()
            if not user:
                user = User()
                user.username = username
                user.access_token = token
                user.token_expired = time.time() + 8 * 60 * 60
                user.save()
            login_user(user)
            return app.send_static_file('index.html')
        else:
            sl = "?".join([config.sso_params.get("cootek.authorize"), urlencode(config.authorize_params)])
            return redirect(sl)
 def create(self, validated_data):
     profile_data = validated_data.pop('profile')
     password = validated_data.pop('password')
     user = User(**validated_data)
     user.set_password(password)
     user.save()
     UserProfile.objects.create(user=user, **profile_data)
     return user
Example #5
0
def post():
    form, error = JsonParser('nickname', 'username', 'password',
                             Argument('role_id', type=int, help='请选择角色'),
                             Argument('email', nullable=True),
                             Argument('mobile', nullable=True)).parse()
    if error is None:
        username_is_exist = User.query.filter_by(username=form.username).first()
        if username_is_exist:
            return json_response(message="用户名已存在")
        User(**form).save()
        return json_response()
    return json_response(message=error)
Example #6
0
    def post(self):
        args = self.parser.parse_args()
        username = args.get('username')
        password = args.get('password')

        if username and password:
            try:
                user = User()
                user.username = username
                user.password = password
                db.session.add(user)
                db.session.commit()
            except:
                db.session.rollback()
Example #7
0
def register():
    if request.method == 'GET':
        return render_template('register.html')
    else:
        username = request.values.get('username')
        password = request.values.get('password')
        user = User.query.filter(User.username == username).first()
        if user:
            return render_template('register.html', msg='用户存在,请重新注册')
        else:
            user = User(username=username)
            user.password = password
            db.session.add(user)
            db.session.commit()
    return render_template('register.html', msg='注册成功')
Example #8
0
def createsuperuser(username, password):
    if not all([username, password]):
        print("参数不足,请指定用户名和密码")
    from apps.account.models import User
    user = User()
    user.nick_name = username
    user.mobile = username
    user.password = password
    user.is_admin = True
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
    return "添加成功"
Example #9
0
def create_admin():
    from apps.account.models import User

    admin = User.query.filter_by(is_supper=True).first()
    if admin:
        user_input = input('已存在管理员账户 <%s>,需要重置密码[y|n]?' % admin.username)
        if user_input.strip() == 'y':
            password = check_input_password(getpass('请输入新的管理员账户密码:'))
            admin.password = password
            admin.token_expired = 0
            admin.save()
            print('重置管理员密码成功!')
    else:
        username = check_input_username(input('请输入管理员账户登录名:'))
        password = check_input_password(getpass('请输入管理员账户密码:'))
        User(username=username, password=password, nickname='管理员', is_supper=True).save()
        print('创建管理员账户成功!')
Example #10
0
    def handle(self, *args, **options):
        # https://pypi.org/project/names/
        User.objects.exclude(is_superuser=True).delete()
        result = []

        cities = []
        for name in ('Kiev', 'Odessa', 'Lviv', 'Dnipro'):
            city, _ = City.objects.get_or_create(name=name)
            cities.append(city)
        for i in range(10_000):
            username = str(uuid4())
            user = User(
                username=username,
                email=username + '@example.com',
                age=random.randint(12, 100),
                salary=random.randint(100, 1000),
                city=random.choice(cities),
            )
            result.append(user)
Example #11
0
    def handle(self, *args, **options):
        User.objects.exclude(username='******').delete()
        result = []  # fill list

        cities = []
        for name in ('Kiev', 'Odessa', 'Lviv', 'Dnipro'):
            city, _ = City.objects.get_or_create(name=name)
            cities.append(city)
        for i in range(10_000):
            a = str(i)
            username = names.get_first_name() + a
            user = User(
                username=username,
                email=username + '@example.com',
                age=random.randint(18, 65),
                first_name=names.get_first_name(),
                last_name=names.get_last_name(),
                city=random.choice(cities),
            )
            result.append(user)
Example #12
0
def create_user_by_parameters(parameters):
    """
    Method for create a User model Object populated with a dict of parameters.

    :param parameters: Dict of values, this key are(
        first_name
        last_name
        username
        email
        password
        is_active
    )
    :return: populated user
    """
    user = User()
    user.first_name = parameters['first_name']
    user.last_name = parameters['last_name']
    user.username = parameters['username']
    user.email = parameters['email'].lower()
    user.password = make_password(parameters['password'])
    user.is_active = parameters['is_active']
    return user
Example #13
0
def login():
    form, error = JsonParser('username', 'password', 'type').parse()
    if error is None:
        if form.type == 'ldap':
            ldap_login = ldap.bind_user(form.username, form.password)
            if ldap_login:
                token = uuid.uuid4().hex
                # user = User.query.filter_by(username=form.username).filter_by(type='LDAP').first()
                user = User.query.filter_by(username=form.username).first()
                if not user:
                    form.nickname = form.username
                    form.type = 'LDAP'
                    form.role_id = 1
                    form.is_supper = False
                    is_supper = False
                    nickname = form.username
                    permissions = []
                    User(**form).save()
                else:
                    user.access_token = token
                    user.token_expired = time.time() + 80 * 60 * 6000
                    is_supper = user.is_supper,
                    nickname = user.nickname,
                    permissions = list(user.permissions)
                    user.save()

                return json_response({
                    'token': token,
                    'is_supper': is_supper,
                    'nickname': nickname,
                    'permissions': permissions
                })
            else:
                return json_response(message='用户名或密码错误,确认输入的是LDAP的账号密码?')
        else:
            user = User.query.filter_by(username=form.username).filter_by(
                type='系统用户').first()
            if user:
                if user.is_active:
                    if user.verify_password(form.password):
                        login_limit.pop(form.username, None)
                        token = uuid.uuid4().hex
                        user.access_token = token
                        user.token_expired = time.time() + 80 * 60 * 6000
                        user.save()
                        return json_response({
                            'token':
                            token,
                            'is_supper':
                            user.is_supper,
                            'nickname':
                            user.nickname,
                            'permissions':
                            list(user.permissions)
                        })
                    else:
                        login_limit[form.username] += 1
                        if login_limit[form.username] >= 3:
                            user.update(is_active=False)
                        return json_response(message='用户名或密码错误,连续3次错误将会被禁用')
                else:
                    return json_response(message='用户已被禁用,请联系管理员')
            elif login_limit[form.username] >= 3:
                return json_response(message='用户已被禁用,请联系管理员')
            else:
                login_limit[form.username] += 1
                return json_response(message='用户名不存在,请确认用户名')
Example #14
0
def staffs(request):
    staff = Staff.objects.filter(school_id=request.user.school_id)

    head = None
    try:
        head = User.objects.get(user_type='SH', school_id=request.user.school_id)
    except User.DoesNotExist:
        pass

    context = {
        'object_list': staff,
        'head': head,
        'errors': ''
    }

    if request.method == 'POST':
        form = request.POST.get('form')

        if form == 'head':
            fname = request.POST.get('first_name')
            lname = request.POST.get('last_name')
            mname = request.POST.get('middle_name')
            email = request.POST.get('email')

            try:
                User.objects.get(username=email, school_id=request.user.school_id)
                context['errors'] = 'This email already exist'
                return render(request, 'staff/index.html', context)
            except User.DoesNotExist:pass

            uc = User.objects.filter(school_id=request.user.school_id).count() + 1

            uc = '{0:04}'.format(uc)

            inst = School.objects.get(school_id=request.user.school_id)

            user = User(
                username=email,
                email=email,
                first_name=fname,
                middle_name=mname,
                last_name=lname,
                slug="-".join((slugify(fname), slugify(lname))),
                user_type='SH',
                account_id=account_id(inst.name, fname, lname, uc),
                school_id=request.user.school_id
            )

            user.set_password('password')

            mystaff = Staff(
                staff_type='SH',
                first_name=fname,
                middle_name=mname,
                last_name=lname,
                created_by=request.user,
                slug="-".join((slugify(fname), slugify(lname))),
                account_activated=True,
                school_id=request.user.school_id,
            )

            user.save()
            mystaff.save()

            return redirect('staff:list')
        elif form == 'activate':
            staff_id = request.POST.get('staff')

            staff_obj = Staff.objects.get(id=staff_id)
            email = request.POST.get('email')

            try:
                User.objects.get(username=email, school_id=staff_obj.school_id)
                context['errors'] = 'This email already exist'
                return render(request, 'staff/index.html', context)
            except User.DoesNotExist:pass

            uc = User.objects.filter(school_id=request.user.school_id).count() + 1

            uc = '{0:04}'.format(uc)

            inst = School.objects.get(school_id=request.user.school_id)

            user = User(
                username=email,
                email=email,
                first_name=staff_obj.first_name,
                middle_name=staff_obj.middle_name,
                last_name=staff_obj.last_name,
                slug="-".join((slugify(staff_obj.first_name), slugify(staff_obj.last_name))),
                user_type=staff_obj.staff_type,
                account_id=account_id(inst.name, staff_obj.first_name, staff_obj.last_name, uc),
                school_id=request.user.school_id,
                profile=staff_obj.profile
            )

            user.set_password('password')

            staff_obj.account_activated = True

            user.save()

            staff_obj.user = user

            staff_obj.save()

            return redirect('staff:list')

    return render(request, 'staff/index.html', context)
Example #15
0
import apps.configuration.models
import apps.deploy.models
import apps.assets.models
import apps.schedule.models
import apps.setting.models

# init database
db.drop_all()
db.create_all()
with open(os.path.join(BASE_DIR, 'libs', 'sql', 'permissions.sql'), 'r') as f:
    line = f.readline()
    while line:
        if line.startswith('INSERT INTO'):
            db.engine.execute(line.strip())
        line = f.readline()

# create default admin
username = '******'
password = '******'
User(username=username,
     password=password,
     nickname='Administrator',
     is_supper=True).save()

print('*' * 80)
print('Database name: ' + (os.getenv('MYSQL_DATABASE') or 'spug'))
print('Database username: '******'MYSQL_USER') or 'spuguser'))
print('Database password: '******'MYSQL_PASSWORD') or 'spugpwd'))
print('Login web site account: %s  %s' % (username, password))
print('*' * 80)
Example #16
0
def signup_school(request):

    # ss1 = None

    try:
        ss1 = request.session['ss1']
    except:
        return redirect(reverse_lazy('account:register-user'))

    context = {'errors': '', 'ss1': ss1}

    if request.method == 'POST':
        name = request.POST.get('institution', None)
        logo = request.FILES.get('logo', None)
        phone_number = request.POST.get('phone_number', None)
        domain = request.POST.get('domain', None)
        gps = request.POST.get('gps', None)

        try:
            School.objects.get(domain=domain)
            context[
                'errors'] = "There's already a school with this domain registered"
            return render(request, 'account/signup2.html', context, status=400)
        except School.DoesNotExist:
            pass

        try:
            User.objects.get(username=ss1['email'])
            context['errors'] = "This email has already been registered"
            return render(request, 'account/signup2.html', context)
        except User.DoesNotExist:
            pass

        inst_count = School.objects.count() + 1

        inst_count = '{0:04}'.format(inst_count)

        user_count = User.objects.filter(
            school_id=institution_id(name, inst_count)).count() + 1

        user_count = '{0:04}'.format(user_count)

        user = User(
            username=ss1['email'],
            email=ss1['email'],
            first_name=ss1['first_name'],
            middle_name=ss1['middle_name'],
            last_name=ss1['last_name'],
            slug="-".join(
                (slugify(ss1['first_name']), slugify(ss1['last_name']))),
            user_type='SAD',
            account_id=account_id(name, ss1['first_name'], ss1['last_name'],
                                  user_count),
            school_id=institution_id(name, inst_count),
        )

        user.set_password(ss1['password'])

        school = School(
            name=name,
            logo=logo,
            gps_address=gps,
            phone_number=phone_number,
            slug=slugify(name),
            created_by=user,
            domain=domain,
            school_id=institution_id(name, inst_count),
        )

        user.save()
        school.save()

        request.session['ss1'] = {}

        return redirect('login')

    return render(request, 'account/signup2.html', context)
Example #17
0
    def post(self, request, *args, **kwargs):
        email = request.data.get('email', None)
        first_name = request.data.get('first_name', None)
        middle_name = request.data.get('middle_name', None)
        last_name = request.data.get('last_name', None)
        password = request.data.get('password', None)
        name = request.data.get('institution', None)
        logo = request.data.get('logo', None)
        phone_number = request.data.get('phone_number', None)
        domain = request.data.get('domain', None)
        gps = request.data.get('gps', None)

        try:
            User.objects.get(username=email)
            return Response({'detail': 'Email already exist'},
                            status=HTTP_400_BAD_REQUEST)
        except User.DoesNotExist:
            pass

        try:
            School.objects.get(domain=domain)
            return Response(
                {
                    'detail':
                    "There's already a school with this domain registered"
                },
                status=HTTP_400_BAD_REQUEST)
        except School.DoesNotExist:
            pass

        inst_count = School.objects.count()

        inst_count = '{0:04}'.format(inst_count)

        user_count = User.objects.filter(
            school_id=institution_id(name, inst_count)).count()

        user_count = '{0:04}'.format(user_count)

        user = User(
            username=email,
            email=email,
            first_name=first_name,
            middle_name=middle_name,
            last_name=last_name,
            slug="-".join((slugify(first_name), slugify(last_name))),
            user_type='SAD',
            account_id=account_id(name, first_name, last_name, user_count),
            school_id=institution_id(name, inst_count),
        )

        user.set_password(password)

        school = School(
            name=name,
            logo=logo,
            gps_address=gps,
            phone_number=phone_number,
            slug=slugify(name),
            created_by=user,
            domain=domain,
            school_id=institution_id(name, inst_count),
        )

        user.save()
        school.save()

        user = UserSerializer(user, context={'request': request})

        school = SchoolSerializer(school, context={'request': request})

        return Response({
            'user': user.data,
            'institution': school.data
        },
                        status=HTTP_201_CREATED)
Example #18
0
def register():
    user = User(username='******')
    user.password = '******'
    db.session.add(user)
    db.session.commit()
    return '注册成功'