Beispiel #1
0
def auth_callback(request):
    """
    单点登录后的回调(由SSO服务器发起)
    :param request:
    :return:
    """
    auth_token = request.POST.get("auth_token")
    redirect = request.GET.get("redirect", settings.LOGIN_REDIRECT_URL)

    error, user, user_info = SSOAuthBackend.authenticate(auth_token)
    if not error:
        try:
            if not user:  # 这种情况表明用户在其他site注册,并且首次登陆本site
                role = Contants.ROLE_USER
                if user_info is not None and user_info[
                        'admin'] is not None and request.get_host().lower(
                        ) in user_info['admin'].lower():
                    role = Contants.ROLE_ADMIN
                user = UserProfile(username=user_info['username'],
                                   email=user_info['email'],
                                   role=role)
                user.save()
            auth.login(request, user)  # create session, write cookies
            logined_users[auth_token] = user  # 存入全局变量中
            request.session["auth_token"] = auth_token  # 存入session
            return HttpResponseRedirect(redirect)
        except Exception as e:
            logger.info(str(e))
            return HttpResponse('sso authenticate failed')
    else:
        raise PermissionDenied
Beispiel #2
0
def join(request):
    """注册"""
    if request.POST.get('_method', '') == 'put':
        username = request.POST.get('username', '')
        email = request.POST.get('email','')
        password = request.POST.get('password', '')
        try:
            user = User.objects.create_user(username=username,email=email,password=password)
            profile = UserProfile(
                user_id=str(user.id),
                nickname=username,
                email = email
            )
            profile.save()
        except:
            get_trace.print_trace()

        resp = jsonresponse.creat_response(200)
        data = {
            'url': '/login/'
        }
        resp.data = data
        return resp.get_response()
    else:
        return render_to_response('join.html', {})
def recalculate_reputation(profile: UserProfile):
    comments = Comment.objects.filter(author=profile)
    photos = Photo.objects.filter(author=profile)
    reactions = Reaction.objects.filter(author=profile).count()

    reputation = 0
    for comment in comments:
        reputation += comment.experience
    for photo in photos:
        reputation += photo.experience
    reputation += reactions

    items = Item.objects.filter(author=profile)
    for item in items:
        reputation += 5
        if item.ratings.count() > 5:
            reputation += 5
        if item.comments.count() > 5:
            reputation += 5
        if item.photos.count() > 5:
            reputation += 5
        if item.flags > 5:
            reputation -= 15
        if 0 < item.flags <= 5:
            reputation -= 5

    profile.reputation = reputation
    profile.save()
Beispiel #4
0
    def handle(self, *args, **options):
        print('Loading users')
        user_file = os.path.join(FIXTURES_PATH, 'users.json')
        with open(user_file, 'r') as f:
            jdata = json.loads(f.read())
            UserProfile.objects.all().delete()
            for user in jdata['administratiors']:
                profile = UserProfile()
                profile.username = user['username']
                profile.set_password(user['password'])
                profile.publicname = user['username']
                profile.is_staff = True
                profile.is_superuser = True
                profile.is_superuser = True
                profile.save()
                print('Creating ... %s' % user['username'])

            for user in jdata['female']:
                rez = requests.post(API_URL + 'account/registration',
                                    json=user)
                print(json.loads(rez.text)['message'])

            for user in jdata['male']:
                rez = requests.post(API_URL + 'account/registration',
                                    json=user)
                print(json.loads(rez.text)['message'])
Beispiel #5
0
	def form_valid(self, form):
		# create a new user for this sponsor
		try:
			sp = transaction.savepoint()
			user = User(username = form.cleaned_data["sponsorUsername"])
			baseContact = form.cleaned_data["sponsorContact"]
			user.first_name = baseContact.contactPersonFirstname
			user.last_name = baseContact.contactPersonSurname
			user.email = baseContact.contactPersonEmail
			user.save()

			profile = UserProfile(user = user)
			profile.authToken = id_generator(24)
			profile.save()

			sponsoring = Sponsoring()
			sponsoring.owner = user
			sponsoring.contact = baseContact
			sponsoring.package = form.cleaned_data["sponsorPackage"]
			sponsoring.adminComment = form.cleaned_data["internalComment"]
			sponsoring.save()

			self.object = sponsoring

			transaction.savepoint_commit(sp)
		except Exception as e:
			transaction.savepoint_rollback(sp)
			raise e


		return HttpResponseRedirect(self.get_success_url())
Beispiel #6
0
def get_profile(userobj):
    try:
        profile = UserProfile.objects.get(user=userobj)
    except UserProfile.DoesNotExist:
        profile = UserProfile(user=userobj)
        profile.save()
    return profile
Beispiel #7
0
    def post(self, request, *args, **kwargs):
        if request.method == "POST":
            username = request.POST["username"]
            email = request.POST["email"]
            phone = request.POST["phone"]
            password = request.POST["password"]
            # role = int(request.POST["role"])
            role = request.POST["role"]
            branch = request.POST["branch"]
            city = request.POST["city"]
            country = request.POST["country"]
            address = request.POST["address"]
            user_data = User.objects.create(username=username,
                                            email=email,
                                            password=password)
            user_data.set_password(user_data.password)
            user_data.save()
            # get_role = get_object_or_404(Role, id=role)
            userprofile = UserProfile(userx=user_data,
                                      phone=phone,
                                      role=role,
                                      branch=branch,
                                      city=city,
                                      country=country,
                                      address=address,
                                      created_dt=datetime.now(),
                                      created_by=request.user)

            userprofile.save()

            return HttpResponseRedirect(reverse('account:CreateUserView'))
Beispiel #8
0
def create_user(username='******', email='*****@*****.**', password='******', first_name='John', last_name='Doe', job_title='scrum master', office='opendream', has_image=False, timezone='Asia/Bangkok'):
    user = User.objects.create_user(username, email, password)
    account = UserProfile(first_name=first_name, last_name=last_name, user=user, job_title=job_title, office=office, timezone=timezone)
    if has_image:
        account.image = DjangoFile(open('static/tests/avatar.png'), 'avatar.png')
    account.save()

    return user
Beispiel #9
0
def retrieve(request):
    ''' note that this requires an authenticated user before we try calling it '''
    try:
        profile=request.user.profile
    except UserProfile.DoesNotExist:
        profile=UserProfile(user=request.user)
        profile.save()
    return profile
Beispiel #10
0
 def create(self, validated_data):
   """
   Create and return a new 'User' instance, given the validated data
   """
   user = User.objects.create_user(validated_data['username'], validated_data['email'], validated_data['password'])
   user.save()
   profile = UserProfile(user=user)
   profile.save()
   return user
Beispiel #11
0
 def setUp(self):
     # Every test needs a client.
     self.client = Client()
     password = make_password('admin', salt=None, hasher='default')
     user = User(username='******', password=password, email='*****@*****.**')
     user.save();
     userprofile = UserProfile(user=user, usertype='4', department='admin', phone='admin')
     userprofile.save()
     self.client.login(username='******', password='******')
Beispiel #12
0
def init():
    admin = User.objects.create_user(username="******", password="******")
    admin.is_staff = True
    admin.is_superuser = True
    admin.save()
    admin_profile = UserProfile(user=admin,name="최고관리자")
    admin_profile.save()

    staff = User.objects.create_user(username="******", password="******")
    staff.is_staff = True
    staff.save()
    staff_profile = UserProfile(user=staff,name="일반회원")
    staff_profile.save()

    user = User.objects.create_user(username="******", password="******")
    user.save()
    profile = UserProfile(user=user,name="비회원")
    profile.save()


    board = Board(name="board", order=0)
    board.save()

    for i in range(45):
        article = Article(
                author=staff_profile,
                title='title'+str(i), 
                board=board,
                contents='contents',
                notice=False,
                read=0)
        article.save()
Beispiel #13
0
def register(request):

    if request.POST:
        username = request.POST.get('org.username',None)
        password = request.POST.get('password',None)
        confirmpwd = request.POST.get('confirmpwd',None)
        password = username
        confirmpwd = username
        email = request.POST.get('org.email',None)
        
        role_name_str = request.POST.get('org.role_name', None)
        
        department = request.POST.get('org.parent_organization_name',None)
        
        
        phone = request.POST.get('phone',None)
        '''验证重复帐号名'''
        usernames = User.objects.filter(username__iexact=username)
        '''验证重复email'''
        emails = User.objects.filter(email__iexact=email)
        if usernames:
            return HttpResponse(simplejson.dumps({"statusCode":302, "navTabId":request.POST.get('navTabId','accountindex'), "callbackType":request.POST.get('callbackType',None), "message":u'用户名已经存在不能添加', "info":u'用户名已经存在不能添加',"result":u'用户名已经存在不能添加'}), mimetype='application/json')
        
        
        '''验证两次输入密码是否一致'''
        if password != confirmpwd:
            return HttpResponse(simplejson.dumps({"statusCode":302, "navTabId":request.POST.get('navTabId','accountindex'), "callbackType":request.POST.get('callbackType',None), "message":u'两次密码输入不一致', "info":u'两次密码输入不一致',"result":u'两次密码输入不一致'}), mimetype='application/json')
        
        if emails:
            return HttpResponse(simplejson.dumps({"statusCode":302, "navTabId":request.POST.get('navTabId','accountindex'), "callbackType":request.POST.get('callbackType',None), "message":u'EMAIL已经存在不能添加', "info":u'EMAIL已经存在不能添加',"result":u'EMAIL已经存在不能添加'}), mimetype='application/json')
        if password != None and password != '':
            password = make_password(password, salt=None, hasher='default')
            user = User(username=username, password=password, email=email)
        else:
            user = User(username=username, email=email)
        user.save()
        userprofile = UserProfile(user=user, department=department, phone=phone)
        userprofile.save()
        
        if role_name_str != None and role_name_str != '':
            role_name_list = role_name_str.split(',')
            for role_name in role_name_list:
                if role_name != None and role_name != '':
                    try:
                        role = Role.objects.get(role_name__exact=role_name)
                        role.users.add(user)
                    except:
                        return HttpResponse(simplejson.dumps({"statusCode":302, "navTabId":request.POST.get('navTabId','accountindex'), "callbackType":request.POST.get('callbackType',None), "message":u'存在无效角色名请重新选择或置空'}), mimetype='application/json')
        
        
        Log(username=request.user.username, content=u"成功创建用户: " + username, level=1).save()
        return HttpResponse(simplejson.dumps({"statusCode":200, "navTabId":request.POST.get('navTabId','accountindex'), "callbackType":request.POST.get('callbackType','closeCurrent'), "message":u'添加成功'}), mimetype='application/json')
    else:
        return render_to_response('account/register.html', {'account_usertype_dict':account_usertype_dict})
Beispiel #14
0
    def setUp(self):
        # Every test needs a client.
        self.client = Client()
        password = make_password('admin', salt=None, hasher='default')
        user = User(username='******', password=password, email='*****@*****.**')
        user.save();
        userprofile = UserProfile(user=user, department='admin', phone='admin')
        userprofile.save()
        #系统自带的login函数,不会触发自定义的login函数
#        self.client.login(username='******', password='******')
        self.client.post('/account/login/', {'username':'******', 'password':'******'})
Beispiel #15
0
    def setUp(self):
        # Every test needs a client.
        self.client = Client()
        password = make_password('admin', salt=None, hasher='default')
        user = User(username='******', password=password, email='*****@*****.**')
        user.save();
        userprofile = UserProfile(user=user, department='admin', phone='admin')
        userprofile.save()
        #系统自带的login函数,不会触发自定义的login函数
#        self.client.login(username='******', password='******')
        self.client.post('/account/login/', {'username':'******', 'password':'******'})
        
        for i in range(10): 
            self.client.post('/authority/add_table/',{'table_name':'管理' + str(i), 'table_desc':'申请资源'})
Beispiel #16
0
	def process_job(self):
		try:
			user = User.objects.get(pk=self.kwargs["pk"])
		except User.DoesNotExist:
			raise Http404

		try:
			up = UserProfile.objects.get(user=user)
		except UserProfile.DoesNotExist:
			up = UserProfile(user=user)

		up.authToken = id_generator(24)
		up.save()
		return True
Beispiel #17
0
def registration(request, register_success_url="login", template="account/registration.html"):
    form = RegistrationForm()

    if request.POST:
        form = RegistrationForm(request.POST)

        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
        
            user = User.objects.create_user(username=email,
                email=email,
                password=password)

            user.first_name = first_name
            user.last_name = last_name
            user.save()

            salt = sha.new(str(random.random())).hexdigest()[:5]
            activation_key = sha.new(salt+user.username).hexdigest()
            key_expires = datetime.datetime.today() + datetime.timedelta(2)

            user_profile = UserProfile(
            user=user,
            activation_key=activation_key,
            key_expires=key_expires)

            user_profile.save()
            
            current_site = Site.objects.get_current()
            subject = "welcome to my blog"
            message =  ('Please click the link below to'
                'activate your user account \n''%s%s%s') % (
                    current_site, "/account/confirm/", activation_key)

            sender = EMAIL_HOST_USER
            recipients = [email]

            
            mail_sender(subject=subject, message=message,
                        sender=sender, recipients=recipients)

            authenticate(email=email, password=password)


            return redirect(register_success_url)

    return render(request, template, {'form': form})
Beispiel #18
0
    def test_bar_payment_user_uses_only_accepted_tabs(
        self, mock_bar_models_charge_source, mock_bar_models_authorize_source
    ):
        """
		Ensure that a payment only use tabs that have been accepted
		For this test you need:
		- A bar
		- A user
		- Another user
		- A tab created by each user
		"""
        self.user.customer.default_source = "123"
        self.user.customer.save()
        mock_bar_models_authorize_source.return_value = {"id": "jnsdflkgj34r"}
        mock_bar_models_charge_source.return_value = {"id": "jnsdflkgj34r"}
        # Create another user
        user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now())
        user.groups.add(Group.objects.filter(name="Drinkers")[0])
        # Create a 2 tabs
        # This one should not be accepted
        tab2 = Tab.new(20.00, self.user.email, "ijbwflgkbsdf", user)
        # This one should be automatically accepted
        tab1 = Tab.new(20.00, self.user.email, "ijbwflgkbsdf", self.user)
        url = reverse("api:bar-pay", args=(1,))
        amount = 10
        d = {"amount": amount}
        response = self.client.post(url, d, format="json")
        self.assertEqual(len(response.data.get("transactions")), 1)
        self.assertIsNotNone(response.data.get("sale"))
        # The user's tab should now be $10
        self.assertEqual(response.data.get("tab"), 10)
        transactions = response.data.get("transactions")
        self.assertEqual(transactions[0]["status"], "authorized")
        self.assertEqual(transactions[0]["amount"], 10.00)
        self.assertEqual(transactions[0]["tab_id"], tab1.pk)
Beispiel #19
0
 def setUp(self, mock_bar_models_authorize_source, mock_bar_models_charge_source, mock_account_models_stripe):
     # mock_account_models_customer.default_source = '123'
     mock_account_models_stripe.Customer.create.return_value = {"id": "13542lknlknlkn"}
     mock_bar_models_authorize_source.return_value = {"id": "jnsdflkgj34r"}
     # Create groups
     group = Group(name="Bar Owners")
     group.save()
     g = Group(name="Drinkers")
     g.save()
     # Create a user
     email = "*****@*****.**"
     password = "******"
     self.firstname = "Bob"
     self.lastname = "Dyllan"
     self.dob = datetime.datetime.now()
     self.user = UserProfile.new(email, password, self.firstname, self.lastname, self.dob)
     self.user.groups.add(group)
     self.client = APIClient(enforce_csrf_checks=True)
     self.client.force_authenticate(user=self.user)
     d = {
         "street": "123 Street",
         "city": "Des Moines",
         "province": "IA",
         "postal": "50305",
         "country": "US",
         "lat": 41.0,
         "lng": -91.0,
     }
     bar = Bar.new("Test Bar 1", d, self.user)
     bar.save()
     self.bar = bar
     m = StripeMerchant(user=self.user, account_id="123", pub_key="123", refresh_token="123", access_token="123")
     m.save()
Beispiel #20
0
    def authenticate(self, openid_response):
        if openid_response is None:
            return None
        if openid_response.status != SUCCESS:
            return None

        google_email = openid_response.getSigned(
            'http://openid.net/srv/ax/1.0', 'value.email')
        google_firstname = openid_response.getSigned(
            'http://openid.net/srv/ax/1.0', 'value.firstname')
        google_lastname = openid_response.getSigned(
            'http://openid.net/srv/ax/1.0', 'value.lastname')
        username = google_email.split('@')[0]
        print username
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            user = User.objects.create_user(username=username,
                                            password='******',
                                            email=google_email)
            user.first_name = google_firstname
            user.last_name = google_lastname
            user.save()
            gravatar_url = "http://www.gravatar.com/avatar/" + hashlib.md5(
                google_email).hexdigest()
            userprofile = UserProfile(user=user,
                                      gravatar_url=gravatar_url).save()
            return user

        return user
 def handle(self, *args, **options):
     fn = options['input']
     csv_reader = csv.reader(open(fn))
     group = Group.objects.get(name='students')
     
     for row in csv_reader:
         sn = row[0]
         name = row[1]
         try: 
             u = User.objects.create_user(sn, '', sn)
             u.groups.add(group)
             profile = UserProfile(real_name=name, student_number=sn, user=u)
             profile.save()
         except IntegrityError:
             pass
         self.stdout.write(name.decode('utf-8').encode('cp936'))
Beispiel #22
0
def register(request):
    if request.user.is_authenticated():
        redirect(reverse('home'))

    context = {}
    if request.method == 'GET':
        context['form'] = RegisterForm()
        return render(request, 'account/register.html', context)

    form = RegisterForm(request.POST)
    context['form'] = form

    if not form.is_valid():
        return render(request, 'account/register.html', context)

    new_user = User.objects.create_user(username=form.cleaned_data['email'], password=form.cleaned_data['password1'])
    new_user.is_active = False
    new_user.first_name = form.cleaned_data['fname']
    new_user.last_name = form.cleaned_data['lname']
    new_user.save()

    token = default_token_generator.make_token(new_user)
    if form.cleaned_data['user_type'] == 'c':
        is_customer = True
    else:
        is_customer = False
    user_profile = UserProfile(is_customer=is_customer, token=token, user=new_user)
    try:
        user_profile.save()
    except IntegrityError:
        context['errors'] = 'another user has already used this email address'
        return render(request, 'account/register.html', context)

    subject = 'Confirmation from Yummy'
    message = 'Click this link to activate your account: ' + "http://128.237.180.208:8000" + \
              reverse('activate', kwargs={'token': token})
    from_addr = '*****@*****.**'
    recipients = [form.cleaned_data['email']]
    # send the activation email to the registered email address asynchronously by starting a daemon thread
    t = threading.Thread(target=send_mail, args=[subject, message, from_addr, recipients], kwargs={'fail_silently': True})
    t.setDaemon(True)
    t.start()

    context['email'] = form.cleaned_data['email']
    return render(request, 'account/activate-required.html', context)
Beispiel #23
0
    def save(self):
        email = self.cleaned_data["email"]
        first_name = self.cleaned_data["first_name"]
        last_name = self.cleaned_data["last_name"]
        password = self.cleaned_data["password"]
        password_c = self.cleaned_data["password_c"]
        bio = self.cleaned_data["bio"]
        random_username = hashlib.sha224(email).hexdigest()[:30]
        activation_code = hashlib.sha224(email).hexdigest()[:50]

        user = User()
        user.username = random_username
        user.email = email
        user.first_name = first_name
        user.last_name = last_name
        user.is_active = False
        user.set_password(password)
        user.save()

        user_profile = UserProfile()
        user_profile.bio = bio
        user_profile.user = user
        user_profile.activation_code = activation_code
        user_profile.save()
        send_user_activation_mail.delay(activation_code, email)
Beispiel #24
0
def PNewUser(request):
	json_data=status.objects.filter(status='ERR',MSG='PD')
	errors=""
	if request.method == 'POST':
		#userprofile_form = UserProfileForm(request.POST)
		user_form = UserForm(request.POST)
		#if userprofile_form.is_valid() and user_form.is_valid():
		if user_form.is_valid():
			user_clean_data = user_form.cleaned_data
			created_user = User.objects.create_user(user_clean_data['username'], user_clean_data['email'], user_clean_data['password1'])
			created_user.first_name=request.POST['firstname']
			created_user.last_name=request.POST['lastname']
			created_user.is_active = False
			created_user.save()
			pinHash = str(hash("CLT"+ created_user.username + created_user.email))[3:9]
			userprofile = UserProfile(user=created_user, hash=pinHash, pwdhash=0) #hash=hashlib.sha224("CLT" + created_user.username + created_user.email).hexdigest())
			#userprofile.user = created_user
			#userprofile.phone_num1 = userprofile_form.cleaned_data['phone_num1']
			#userprofile.hash = hashlib.sha224("CLT" + created_user.username + created_user.email).hexdigest()
			userprofile.save()
			#subject = "new provider notice"
			#accept_link = 'http://cl.kazav.net/account/validate_prov/' + str(created_user.id) + '/' + userprofile.hash + '/'
			#html_message = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">Welcome to CLT<BR> Name: ' + created_user.first_name + ' ' + created_user.last_name + '<BR> <a href="' + accept_link + '"> Validate Me </a> '
			#text_message = 'Welcome to CLT. Name: ' + created_user.first_name + ' ' + created_user.last_name + '      Validate yourself at: ' + accept_link 
			#user_mail=created_user.email
			#msg = EmailMultiAlternatives(subject, text_message, 'CLT Server<*****@*****.**>', [user_mail])
			#msg.attach_alternative(html_message,"text/html")
			#msg.send()
			textmessage="Hi " + request.POST['firstname'] + " and welcome to CLT. This is your PIN code for activating your account: " + pinHash
			account_sid = "AC442a538b44777e2897d4edff57437a24"
			auth_token  = "be3a4e5fbf058c5b27a2904efd05d726"
			client = TwilioRestClient(account_sid, auth_token)
			#DEL COMMENT TO ENABLE SMS			message = client.sms.messages.create(body=textmessage,to="+"+created_user.username,from_="+16698005705")
			#new_user = authenticate(username=request.POST['username'], password=request.POST['password1'])
			#login(request, new_user)
			json_data = status.objects.filter(status='OK')
		else:
			json_data = status.objects.filter(status='WRN')
			if user_form.errors.items() :
				errors = ",[" + str(dict([(k, v[0].__str__()) for k, v in user_form.errors.items()])) + "]"
			#if userprofile_form.errors.items():
			#	errors += ",[" + str(dict([(k, v[0].__str__()) for k, v in userprofile_form.errors.items()])) + "]"
	json_dump = "[" + serializers.serialize("json", json_data)
	json_dump += errors + "]"
	return HttpResponse(json_dump.replace('\'','"'))
Beispiel #25
0
def register(request, tmpl):
    syserr = False
    if request.user.is_authenticated():
        return HttpResponseRedirect('/account/home/')

    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            try:
                new_user = User.objects.create_user(
                    username=form.cleaned_data['username'],
                    email=form.cleaned_data['email']
                )
                new_user.set_password(form.cleaned_data['password'])
                new_user.first_name = form.cleaned_data['first_name']
                new_user.last_name = form.cleaned_data['last_name']
                new_user.save()
                badge = form.cleaned_data['badge_type']
                if not badge.userchoice:
                    badge = Badge.objects.filter(default=True)[0]
                if request.session.get('register_data'):
                    notes = "REGISTER_DATA:%s\n" % (request.session.get('register_data'))
                else:
                    notes = ""
                new_profile = UserProfile(
                    user=new_user,
                    gender=form.cleaned_data['gender'],
                    address=form.cleaned_data['address'],
                    zipcode=form.cleaned_data['zipcode'],
                    city=form.cleaned_data['city'],
                    country=form.cleaned_data['country'],
                    language=form.cleaned_data['language'],
                    badge_type = badge,
                    badge_text=form.cleaned_data['badge_text'],
                    comments=form.cleaned_data['comments'],
                    fingerprint=form.cleaned_data['fingerprint'],
                    notes = notes
                )
                new_profile.save()
            except Exception, e:
                print e
                syserr = True
            else:
                return HttpResponseRedirect('/account/register/complete/')
Beispiel #26
0
def register_user(request):
    """
        User sign up form

    :param request:
    """
    if request.method == "POST":
        data = request.POST.copy()
        data['username'] = ''.join([choice(letters) for i in xrange(30)])
        user_register_form = UserRegisterForm(data)
        if user_register_form.is_valid():
            # creating activation code for new user
            activation_key = tasks.generate_activation_key(
                data["username"]
            )
            # creating expired date for new activation key
            key_expires = tasks.generate_key_expires_date()
            tasks.send_activation_code.delay(
                activation_key,
                data["email"]
            )

            user_register_form.save()

            user = User.objects.get(username=data['username'])
            url = data["url"]
            birth_date = data["birth_date"]
            user_profile = UserProfile(user=user,
                                       url=url,
                                       birth_date=birth_date,
                                       activation_key=activation_key,
                                       key_expires=key_expires)
            user_profile.save()
            messages.success(
                request,
                _('Registration successful. You need to confirm your account.'),
                fail_silently=True
            )
            return render(request, "login.html")
    else:
        user_register_form = UserRegisterForm()
    c = {"form": user_register_form}
    c.update(csrf(request))
    return render(request, "register.html", c)
Beispiel #27
0
    def create(self, validated_data):
        profile_data = validated_data.pop('profile', None)
        username = validated_data['username']
        email = validated_data['email']
        password = validated_data['password']
        user = User(username=username, email=email)
        user.set_password(password)
        user.save()
        avatar = profile_data.get('avatar') or None
        if not avatar:
            avatar = 'http://api.adorable.io/avatar/200/' + username

        profile = UserProfile(user=user,
                              bio=profile_data.get('bio', ''),
                              avatar=avatar,
                              name=profile_data.get('name', ''),
                              status=profile_data.get('status', 'Member'))
        profile.save()
        return user
Beispiel #28
0
def add(request):
    role_list = Role.objects.all()
    if request.POST:
        username = request.POST.get("username")
        realname = request.POST.get("realname")
        email = request.POST.get("email")
        roles = request.POST.getlist("role")
        department = request.POST.get("department")
        phone = request.POST.get("phone")
        # 验证重复的帐号名
        usernames = User.objects.filter(username__iexact=username)
        # 验证重复的邮件地址
        emails = User.objects.filter(email__iexact=email)
        
        if usernames:
            return HttpResponse(simplejson.dumps({"statusCode":403,  "message":u'用户名已经存在不能添加'}), mimetype='application/json')
        if emails:
            return HttpResponse(simplejson.dumps({"statusCode":403,  "message":u'邮件地址已经存在不能添加'}), mimetype='application/json')
        # 验证用户名是否存在于LDAP中
        if not validate_ldap(username):
            return HttpResponse(simplejson.dumps({"statusCode":403,  "message":u'用户名无效不能添加'}), mimetype='application/json')
        
        # 保存用户信息
        # 密码由用户名单向散列得到,实际登录时使用LADP 验证真正的用户名和密码
        password = make_password(username, salt=None, hasher='default')
        
        user = User(username=username, email=email,password=password)
        user.save()
        userprofile = UserProfile(user=user, department=department, phone=phone,realname=realname)
        userprofile.save()
        
        # 保存角色信息 
        for item in roles:
            user.role_set.add(int(item))
        
        # 日志
        Log(username=request.user.username,log_type=1,relate_id=user.id,content="execute add user " + user.username + " success!", level=1).save()
        
        return HttpResponse(simplejson.dumps({"statusCode":200,"url": "/account/index", "message":u'添加成功'}), mimetype='application/json')
    
    return render_to_response('account/add.html',{'role_list':role_list},context_instance=RequestContext(request))
Beispiel #29
0
def signup_callback(request):
    """
    注册成功后的回调(由SSO服务器发起)
    :param request:
    :return:
    """
    auth_token = request.POST.get("auth_token")
    redirect = request.GET.get("redirect", settings.LOGIN_REDIRECT_URL)

    error, user, user_info = SSOAuthBackend.authenticate(auth_token)
    if error or user or not user_info:
        raise PermissionDenied
    else:
        user = UserProfile(username=user_info['username'],
                           email=user_info['email'])
        user.save()

        auth.login(request, user)  # create session, write cookies
        logined_users[auth_token] = user  # 存入全局变量中
        request.session["auth_token"] = auth_token  # 存入session
        return HttpResponseRedirect(redirect)
Beispiel #30
0
def changepwd_callback(request):
    """
    修改密码后的回调(由SSO服务器发起)
    :param request:
    :return:
    """
    auth_token = request.POST.get("auth_token")
    redirect = request.GET.get("redirect", settings.LOGIN_REDIRECT_URL)

    error, user, user_info = SSOAuthBackend.authenticate(auth_token)
    if not error:
        if not user:  # 这种情况表明用户在其他site注册,并且首次登陆本site
            user = UserProfile(username=user_info['username'],
                               email=user_info['email'])
            user.save()
        auth.login(request, user)  # create session, write cookies
        logined_users[auth_token] = user  # 存入全局变量中
        request.session["auth_token"] = auth_token  # 存入session
        return HttpResponseRedirect(redirect)
    else:
        raise PermissionDenied
Beispiel #31
0
    def save(self):
        email = self.cleaned_data["email"]
        first_name = self.cleaned_data["first_name"]
        last_name = self.cleaned_data["last_name"]
        password = self.cleaned_data["password"]
        password_c = self.cleaned_data["password_c"]
        bio = self.cleaned_data["bio"]
        random_username = hashlib.sha224(email).hexdigest()[:30]
        activation_code = hashlib.sha224(email).hexdigest()[:50]
        
        user = User()
        user.username = random_username
        user.email = email
        user.first_name = first_name
        user.last_name = last_name
        user.is_active = False
        user.set_password(password)
        user.save()

        user_profile = UserProfile()
        user_profile.bio = bio
        user_profile.user = user
        user_profile.activation_code = activation_code
        user_profile.save()
        send_user_activation_mail.delay(activation_code, email)
Beispiel #32
0
def register(request):
    form = RegisterForm()

    if (request.method == 'POST'):
        form = RegisterForm(request.POST)
        if (form.is_valid()):
            form.save()
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password1')
            email = form.cleaned_data.get('email')
            user = authenticate(username=username, password=password)
            user_profile = UserProfile(user=user)
            user_profile.email_confirmed = False
            varification_code = id_generator()
            user_profile.hashcode = varification_code
            user_profile.save()
            ##send_mail(subject, msg, from, to_list, fail_silently=True)
            subject = "Account info of mushroom firm"
            msg = "Dear " + user.first_name + ", \nCongratulations! your account has been created. Please varify your email from your account option. Use this code while varifying your email: " + varification_code
            from_email = settings.EMAIL_HOST_USER
            to_email = [email, settings.EMAIL_HOST_USER]
            send_mail(subject, msg, from_email, to_email, fail_silently=True)
            messages.success = (request,
                                "Your account has ben created successfully!")
            return HttpResponseRedirect(reverse('login'))
    context = {'form': form}
    template = 'account/register.html'
    return render(request, template, context)
Beispiel #33
0
def my_signup(request):
    # if the user is already logged in, send them to the current_courses page
    if request.user.is_authenticated():
        return HttpResponseRedirect('/gradebook/current_courses/')

    if request.is_ajax():
        get_action = request.GET['get_action']
        if get_action == 'is_email_unique':
            email = request.GET['email_in_question']
            unique = User.objects.filter(username=email).count() == 0
            return HttpResponse(json.dumps({'is_unique': unique}), mimetype='application/json')

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

        if form.is_valid():
            password1 = form.cleaned_data.get('password1')
            #password2 = form.cleaned_data.get('password2')
            #if password1 != password2:
            #    form.errors.setdefault('password1', ErrorList()).append(form.error_messages['password_mismatch'])
            #else:
            email = form.cleaned_data.get('email')
            user = User.objects.create_user(username=email,
                                            password=password1,
                                            email=email)
            user.first_name = form.cleaned_data.get('first_name')
            user.last_name = form.cleaned_data.get('last_name')
            user.is_active = False  # user is inactive until email is validated
            user.save()
            prof = UserProfile(user=user)
            prof.save()

            send_validation_email(user)

            login(request, authenticate(username=email, password=password1))

            return HttpResponseRedirect('/account/settings/')
    else:
        form = MyUserCreationForm()
    return HttpResponseRedirect('/')
Beispiel #34
0
    def save(self):
        username = self.cleaned_data['username']
        password = self.cleaned_data['password']
        user = User(
            username=username,
            email=username,
            is_active=False,
        )
        user.set_password(password)
        user.save()

        profile = UserProfile(
            user=user,
            username=username,
            nickname=username,
            email=username,
            is_mail_verified=False,
        )
        profile.save()

        INFO_LOG.info(gen_info_msg(self._request, action=u'注册成功'))
        return profile
Beispiel #35
0
    def save(self):
        username = self.cleaned_data['username']
        password = self.cleaned_data['password']
        user = User(
            username=username,
            email=username,
            is_active=False,
        )
        user.set_password(password)
        user.save()

        profile = UserProfile(
            user=user,
            username=username,
            nickname=username,
            email=username,
            is_mail_verified=False,
        )
        profile.save()

        INFO_LOG.info(gen_info_msg(self._request, action=u'注册成功'))
        return profile
Beispiel #36
0
def join_form(request):
    if request.method == 'POST':
        user_id = request.POST.get('mb_id', '')
        password = request.POST.get('mb_password', '')
        question = int(request.POST.get('mb_password_q', '0'))
        answer = request.POST.get('mb_password_a', '')
        name = request.POST.get('mb_name', '')
        nick = request.POST.get('mb_nick', '')
        email = request.POST.get('mb_email', '')
        birth = request.POST.get('mb_birth', '')
        sex = request.POST.get('mb_sex', '')
        phone = request.POST.get('mb_hp', '')
        profile_text = request.POST.get('mb_profile', '')
        is_mailing = request.POST.get('mb_mailing', '')
        is_sms = request.POST.get('mb_sms', '')
        is_open = request.POST.get('mb_open', '')

        user = User.objects.create_user(username=user_id,
                                        password=password,
                                        email=email)
        profile = UserProfile(user=user,
                              question=question,
                              answer=answer,
                              name=name,
                              nick=nick,
                              birth=birth,
                              sex=sex,
                              phone=phone,
                              text=profile_text,
                              mailing=(len(is_mailing) > 0),
                              sms=(len(is_sms) > 0),
                              info_open=(len(is_open) > 0))
        profile.save()
        return HttpResponseRedirect('/account/join_success/?name=' + name +
                                    '&id=' + user_id)
    else:
        return render_to_response('account/join_form.html', {},
                                  context_instance=RequestContext(request))
Beispiel #37
0
    def test_role_create(self):
        """
		Ensure that we can create a role
		"""
        url = reverse("api:bar-roles", args=(1,))
        # Create another user
        user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now())
        user.groups.add(Group.objects.filter(name="Drinkers")[0])
        role = "admin,bartender,manager"
        d = {"uid": user.pk, "role": role}
        response = self.client.post(url, d, format="json")
        self.assertEqual(response.data.get("role"), role)
        self.assertTrue(Role.objects.filter().exists())
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
def sign_up_user(request):
    if request.method == 'GET':
        context = {
            'form': SignUpForm(),
        }

        return render(request, 'accounts/sign_up.html', context)
    else:
        form = SignUpForm(request.POST)

        if form.is_valid():
            user = form.save()
            profile = UserProfile(user=user, )
            profile.user.groups.add(Group.objects.get(name='UserGroup'))
            profile.save()
            login(request, user)
            return redirect('index')

        context = {
            'form': form,
        }

        return render(request, 'accounts/sign_up.html', context)
Beispiel #39
0
def PNewUser(request):
  json_data=status.objects.filter(status='ERR',MSG='PD')
  errors=""
  if request.method == 'POST':
    #userprofile_form = UserProfileForm(request.POST)
    user_form = UserForm(request.POST)
    #if userprofile_form.is_valid() and user_form.is_valid():
    if user_form.is_valid():
      user_clean_data = user_form.cleaned_data
      created_user = User.objects.create_user(user_clean_data['username'], user_clean_data['email'], user_clean_data['password1'])
      created_user.first_name=request.POST['firstname']
      created_user.last_name=request.POST['lastname']
      #created_user.is_active = False
      created_user.save()
      pinHash = str(hash("CLT"+ created_user.username + created_user.email))[3:9]
      userprofile = UserProfile(user=created_user, hash=pinHash, pwdhash=0) #hash=hashlib.sha224("CLT" + created_user.username + created_user.email).hexdigest())
      #userprofile.user = created_user
      #userprofile.phone_num1 = userprofile_form.cleaned_data['phone_num1']
      #userprofile.hash = hashlib.sha224("CLT" + created_user.username + created_user.email).hexdigest()
      userprofile.save()
      textmessage="Hi " + request.POST['firstname'] + " and welcome to Cofix. This is your PIN code for activating your account: " + pinHash
      account_sid = "AC442a538b44777e2897d4edff57437a24"
      auth_token  = "be3a4e5fbf058c5b27a2904efd05d726"
      client = TwilioRestClient(account_sid, auth_token)
      message = client.sms.messages.create(body=textmessage,to="+"+created_user.username,from_="+16698005705")
      #new_user = authenticate(username=request.POST['username'], password=request.POST['password1'])
      #login(request, new_user)
      json_data = status.objects.filter(status='OK')
    else:
      json_data = status.objects.filter(status='WRN')
      if user_form.errors.items() :
        errors = ",[" + str(dict([(k, v[0].__str__()) for k, v in user_form.errors.items()])) + "]"
      #if userprofile_form.errors.items():
      # errors += ",[" + str(dict([(k, v[0].__str__()) for k, v in userprofile_form.errors.items()])) + "]"
  json_dump = "[" + serializers.serialize("json", json_data)
  json_dump += errors + "]"
  return HttpResponse(json_dump.replace('\'','"'))
Beispiel #40
0
def join_form(request):
    if request.method == 'POST':
        user_id = request.POST.get('mb_id','')
        password = request.POST.get('mb_password','')
        question = int(request.POST.get('mb_password_q','0'))
        answer = request.POST.get('mb_password_a','')
        name = request.POST.get('mb_name','')
        nick = request.POST.get('mb_nick','')
        email = request.POST.get('mb_email','')
        birth = request.POST.get('mb_birth','')
        sex = request.POST.get('mb_sex','')
        phone = request.POST.get('mb_hp','')
        profile_text = request.POST.get('mb_profile','')
        is_mailing = request.POST.get('mb_mailing','')
        is_sms = request.POST.get('mb_sms','')
        is_open = request.POST.get('mb_open','')

        user = User.objects.create_user(username=user_id, password=password, email=email)
        profile = UserProfile(
                user=user,
                question=question,
                answer=answer,
                name=name,
                nick=nick,
                birth=birth,
                sex=sex,
                phone=phone,
                text=profile_text,
                mailing=(len(is_mailing)>0),
                sms=(len(is_sms)>0),
                info_open=(len(is_open)>0)
                )
        profile.save()
        return HttpResponseRedirect('/account/join_success/?name='+name+'&id='+user_id)
    else:
        return render_to_response('account/join_form.html',{
        }, context_instance=RequestContext(request))
Beispiel #41
0
def create(request, tmpl):
    syserr = False
    create_success = False
    user_obj = None
    if request.method == 'POST':
        form = UserFormManagerCreate(request.POST)
        if form.is_valid():
            try:
                user_obj = User(
                        username = form.cleaned_data['username'],
                        email = form.cleaned_data['email'],
                        first_name = form.cleaned_data['first_name'],
                        last_name = form.cleaned_data['last_name'])
                user_obj.set_password(form.cleaned_data['password'])
                user_obj.save()
                p = UserProfile(
                        user=user_obj,
                        gender = form.cleaned_data['gender'],
                        address = form.cleaned_data['address'],
                        country = form.cleaned_data['country'],
                        zipcode = form.cleaned_data['zipcode'],
                        city = form.cleaned_data['city'],
                        language = form.cleaned_data['language'],
                        badge_text = form.cleaned_data['badge_text'],
                        comments =  form.cleaned_data['comments'],
                        fingerprint = form.cleaned_data['fingerprint'],
                        badge_type = form.cleaned_data['badge_type'],
                        notes =  form.cleaned_data['notes'],
                    payment_later=form.cleaned_data['payment_later'])
                p.save()
                create_success = True
            except Exception, e:
                print e
                syserr = True
            else:
                create_success = True
                form = UserFormManagerCreate()
Beispiel #42
0
    def import_fromcsv(fcsv, emailtmpl):
        if os.path.exists(fcsv) and os.path.exists(emailtmpl):
            handle = file(fcsv)
            for i in handle.readlines():
                values = i.strip().split(';')
                print values
                try:
                    c = Country.objects.get(code=values[6])
                except:
                    c = Country.objects.get(code='fr')

                new_user = User.objects.create_user(
                    username=values[2],
                    email=values[3]
                )
                new_user.first_name=values[1]
                new_user.last_name=values[0]
                new_user.set_password(values[4])
                new_user.save()
                badge = Badge.objects.filter(default=True)[0]
                new_profile = UserProfile(
                    user=new_user,
                    language=values[5],
                    country=c,
                    badge_type = badge,
                    badge_text=values[7],
                )
                new_profile.save()

                handle2 = file(emailtmpl)
                email = handle2.read()
                email = email.replace('###LOGIN###', values[2])
                email = email.replace('###PASSWORD###', values[4])
                send_mail('Your particpation at LSM / Votre particpation aux RMLL', email, '*****@*****.**', [values[3]])
        else:
            print 'Err: unable to find file "%s" or "%s"' % (fcsv, emailtmpl)
    def save(self):

        account = None
        password = self.validated_data['password']
        password2 = self.validated_data['password2']
        check_staff = self.validated_data['check_staff']

        if password != password2:
            raise serializers.ValidationError(
                {'password': '******'t match!'})

        if check_staff:
            staff_id = self.validated_data['staff_id']
            if staff_id == '1000':
                account = BaseAccount(
                    username=self.validated_data['username'],
                    email=self.validated_data['email'],
                    check_staff=True,
                    staff_id=staff_id,
                    is_staff=True,
                )
            else:
                raise serializers.ValidationError(
                    {'staff_id': 'Staff ID isn\'t valid!'})
        else:
            account = BaseAccount(
                username=self.validated_data['username'],
                email=self.validated_data['email'],
            )

        account.set_password(password)
        account.is_active = True  #------------------------------------- NEED TO CHHANGE -----------------------------
        account.save()
        profile = UserProfile(base=account)
        profile.save()
        return account
Beispiel #44
0
    def test_user_get_tab_list(self):
        """
		Ensure we only return active tabs
		"""
        # Create another user
        user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now())
        user.groups.add(Group.objects.filter(name="Drinkers")[0])
        tab = Tab(amount=20, total=20, sender=user, receiver=self.user, source="23423542", charge="13425", active=False)
        tab.save()
        tab = Tab(amount=20, total=20, sender=user, receiver=self.user, source="23423542", charge="13425")
        tab.save()
        url = reverse("api:tabs")
        response = self.client.get(url, format="json")
        tabs = response.data
        self.assertEqual(len(tabs), 1)
Beispiel #45
0
    def test_tab_create_for_another_user(self, mock_bar_models_authorize_source):
        """
		Ensure we can create a tab for another registered user
		"""
        # Create another user
        user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now())
        user.groups.add(Group.objects.filter(name="Drinkers")[0])
        url = reverse("api:tabs")
        d = {"amount": 20, "source": "123", "users": [{"id": user.pk}], "note": "Testy test notes!"}
        mock_bar_models_authorize_source.return_value = {"id": "jnsdflkgj34r"}
        response = self.client.post(url, d, format="json")
        tabs = response.data.get("tabs")
        self.assertEqual(len(tabs), 1)
        self.assertEqual(tabs[0]["receiver"], user.pk)
        self.assertEqual(response.data.get("amount"), d["amount"])
Beispiel #46
0
def login_evernote_token(request):
    """ as get_evernote_token(), but logs the user in as well
    """
    everAuth = EvernoteAPI()
    credentials = everAuth.get_user_token(request)
    if not credentials:
        return HttpResponseRedirect(
            reverse('account.views.login_page', args=[]))
    if request.user.is_authenticated():
        user = request.user
    else:
        evernoteHost = settings.EVERNOTE_HOST
        userStoreUri = "https://" + evernoteHost + "/edam/user"
        userStoreHttpClient = THttpClient.THttpClient(userStoreUri)
        userStoreProtocol = TBinaryProtocol.TBinaryProtocol(
            userStoreHttpClient)
        userStore = UserStore.Client(userStoreProtocol)
        evernoteUser = userStore.getUser(credentials['oauth_token'])
        user = authenticate(username=evernoteUser.username,
                            password=str(evernoteUser.id))
        if not user:
            newUser = User.objects.create_user(evernoteUser.username,
                                               evernoteUser.email,
                                               str(evernoteUser.id))
            names = evernoteUser.name.split() if evernoteUser.name else None
            newUser.first_name = names[0] if names and len(names) > 0 else ""
            newUser.last_name = names[1] if names and len(names) > 1 else ""
            newUser.save()
            user = authenticate(username=evernoteUser.username,
                                password=str(evernoteUser.id))
        login(request, user)

    try:
        expires_time = datetime.fromtimestamp(int(credentials['expires']))
    except TypeError:
        logging.error("Error parsing token expires time")
        expires_time = datetime.now()

    profile = UserProfile()
    profile.user = user
    profile.evernote_token = credentials['oauth_token']
    profile.evernote_token_expires_time = expires_time
    profile.evernote_note_store_url = credentials['edam_noteStoreUrl']
    profile.save()
    return HttpResponseRedirect(reverse('base.views.index', args=[]))