Exemple #1
0
    def get(self, request, app_id):
        cmd = request.GET.get('cmd', None)
        platform = request.GET.get('platform', 'python3')
        adapter = DjangoAdapter(app_id, request)
        allocate_resource_in_background(adapter)
        if cmd == 'download_sdk':
            Util.log('app-overview', request.user,
                     'download-sdk-{}'.format(platform))
            sdk_bin = adapter.generate_sdk(platform)
            if sdk_bin is None:
                Util.add_alert(
                    request, 'API 를 초기화 하고 있습니다. 상황에 따라 최대 3분 정도 소요될 수 있습니다.')
                return redirect(request.path_info)

            response = HttpResponse(sdk_bin,
                                    content_type='application/x-binary')
            response[
                'Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(
                    'AWS Interface SDK.zip')
            return response
        else:
            context = Util.get_context(request)
            context['app_id'] = app_id
            app = App.objects.get(id=app_id, user=request.user)
            context['app_name'] = app.name
            return render(request,
                          'dashboard/app/overview.html',
                          context=context)
Exemple #2
0
    def post(self, request):
        email = request.POST['email']
        password = request.POST['password']
        user = authenticate(username=email, password=password)

        if user is None:
            Util.add_alert(request, '로그인 정보가 틀렸습니다')
            return redirect('login')
        else:
            credentials = user.get_credentials(password)
            Util.reset_credentials(request, credentials)
            login(request, user)
            return redirect(settings.LOGIN_REDIRECT_URL)
Exemple #3
0
 def post(self, request):
     email = request.POST.get('email', None)
     password = request.POST.get('password', None)
     otp_code = request.POST.get('otp_code', None)
     if otp_code and password:
         email = request.session['email']
         if self.verify_otp_code(email, otp_code):
             user = authenticate(username=email, password=password)
             request.session['email'] = None
             if user is None:
                 Util.add_alert(request, '로그인 정보가 틀렸습니다.')
                 request.session['otp_hidden'] = True
                 return redirect('login')
             else:
                 credentials = user.get_credentials(password)
                 Util.reset_credentials(request, credentials)
                 login(request, user)
                 request.session['otp_hidden'] = True
                 return redirect(settings.LOGIN_REDIRECT_URL)
         else:
             Util.add_alert(request, '인증번호가 틀렸습니다.')
             request.session['otp_hidden'] = True
             return redirect('login')
     elif email:
         self.send_otp_email(email)
         request.session['email'] = email
         Util.add_alert(request, '이메일로 인증번호가 전송되었습니다.')
         request.session['otp_hidden'] = False
         return redirect('login')
     else:
         Util.add_alert(request, '모든 정보를 입력헤주세요.')
         request.session['otp_hidden'] = False
         return redirect('login')
Exemple #4
0
    def post(self, request):
        cmd = request.POST.get('cmd', None)
        if cmd == 'create_app':
            self.create_app(request)
            return redirect('apps')
        elif cmd == 'remove_app':
            app_id = request.POST['app_id']

            try:
                app = App.objects.get(id=app_id, user=request.user)
                adapter = DjangoAdapter(app_id, request)
                adapter.terminate_resource()
                app.delete()
                Util.add_alert(request, 'Application removed')
            except IntegrityError as ex:
                print(ex)
                Util.add_alert(request, 'Failed to remove application')
            return redirect('apps')
Exemple #5
0
    def post(self, request):
        password = request.POST['password']
        new_password = request.POST['new_password']

        credentials = request.user.get_credentials(password)
        if not request.user.check_password(password):
            Util.add_alert(request, '비밀번호가 틀렸습니다.')
            return redirect('apps')

        request.user.set_password(new_password)
        request.user.save()

        request.user.set_credentials(new_password, credentials)
        request.user.save()

        credentials = request.user.get_credentials(new_password)
        Util.reset_credentials(request, credentials)
        Util.add_alert(request, '비밀번호를 변경하였습니다.')
        return redirect('apps')
Exemple #6
0
    def post(self, request):
        password = request.POST['password']
        vendor = request.POST['vendor']
        if vendor == 'aws':
            access_key = request.POST['aws_access_key']
            secret_key = request.POST['aws_secret_key']
            region = request.POST['aws_region']
            credential = {
                'access_key': access_key,
                'secret_key': secret_key,
                'region': region
            }

            if not request.user.check_password(password):
                Util.add_alert(request, '비밀번호가 틀렸습니다.')
                return redirect('apps')

            if not Util.is_valid_access_key(access_key, secret_key):
                Util.add_alert(request, '올바른 백엔드 인증 정보를 입력해주세요.')
                return redirect('apps')

            request.user.set_credential(password, vendor, credential)
            request.user.save()

            credentials = request.user.get_credentials(password)
            Util.reset_credentials(request, credentials)
            Util.add_alert(request, '백엔드 인증 정보를 변경하였습니다.')
            return redirect('apps')
Exemple #7
0
    def post(self, request):
        email = request.POST['email']
        password = request.POST['password']
        vendor = request.POST['vendor']

        aws_access_key = request.POST['aws_access_key']
        aws_secret_key = request.POST['aws_secret_key']
        aws_region = request.POST['aws_region']

        normalized_email = get_user_model().objects.normalize_email(email)
        users = get_user_model().objects.all().filter(email=normalized_email)
        if len(users) > 0:
            if len(users) > 1:
                warnings.warn('there are {} users with email {}'.format(
                    len(users), email))

            Util.add_alert(request, '이미 계정이 존재합니다.')
            return redirect('register')
        elif len(password) < 7:
            Util.add_alert(request, '비밀번호는 7자 이상입니다.')
            return redirect('register')
        elif not Util.is_valid_access_key(aws_access_key, aws_secret_key):
            Util.add_alert(request, '유효한 AccessKey 를 입력해주세요.')
            return redirect('register')
        else:
            credentials = {}
            if vendor == 'aws':
                credentials['aws'] = {
                    'access_key': aws_access_key,
                    'secret_key': aws_secret_key,
                    'region': aws_region,
                }
            get_user_model().objects.create_user(
                email,
                password,
                credentials=credentials,
            )
            Util.add_alert(request, '회원가입에 성공하였습니다.')
            return redirect('index')
Exemple #8
0
 def create_app(cls, request):
     name = request.POST['name']
     if not name or len(name) < 3:
         Util.add_alert(request, '이름은 3글자 이상입니다')
         return redirect('apps')
     user = request.user
     app = App.objects.filter(user=request.user, name=name)
     if app:
         Util.add_alert(request, '같은 이름의 어플리케이션이 존재합니다')
         return redirect('apps')
     app = App()
     app.name = name
     app.user = user
     app.save()
     Util.add_alert(request, '새로운 어플리케이션이 생성되었습니다')
Exemple #9
0
    def post(self, request, app_id):
        context = Util.get_context(request)
        context['app_id'] = app_id

        adapter = DjangoAdapter(app_id, request)
        with adapter.open_api_auth() as api:
            cmd = request.POST['cmd']

            if cmd == 'delete_group':
                name = request.POST['group_name']
                error = api.delete_user_group(name).get('error', None)
                if error:
                    Util.add_alert(
                        request, '{}: {}'.format(error['code'],
                                                 error['message']))
            elif cmd == 'put_group':
                name = request.POST['group_name']
                description = request.POST['group_description']
                api.put_user_group(name, description)
            elif cmd == 'set_login_method':
                login_method = request.POST['login_method']
                default_group = request.POST['default_group_name']
                enabled = request.POST['enabled']
                register_policy_code = request.POST.get(
                    'register_policy_code', None)
                if enabled == 'true':
                    enabled = True
                else:
                    enabled = False
                api.set_login_method(login_method, enabled, default_group,
                                     register_policy_code)
            elif cmd == 'put_user':
                email = request.POST['user_email']
                password = request.POST['user_password']
                api.create_user(email, password, {})
            elif cmd == 'delete_user':
                user_id = request.POST['user_id']
                api.delete_user(user_id)
            elif cmd == 'delete_sessions':
                session_ids = request.POST.getlist('session_ids[]')
                api.delete_sessions(session_ids)
            elif cmd == 'delete_users':
                user_ids = request.POST.getlist('user_ids[]')
                api.delete_users(user_ids)
            elif cmd == 'detach_group_permission':
                group_name = request.POST.get('group_name')
                permission = request.POST.get('permission')
                api.detach_group_permission(group_name, permission)
            elif cmd == 'attach_group_permission':
                group_name = request.POST.get('group_name')
                permission = request.POST.get('permission')
                api.attach_group_permission(group_name, permission)
            elif cmd == 'set_users':
                user_ids = request.POST.getlist('user_ids[]')
                field_name = request.POST.get('field_name')
                field_type = request.POST.get('field_type')
                field_value = request.POST.get('field_value', None)
                if field_type == 'S':
                    field_value = str(field_value)
                elif field_type == 'N':
                    field_value = Decimal(field_value)
                with ThreadPoolExecutor(max_workers=32) as exc:
                    for user_id in user_ids:
                        exc.submit(api.set_user, user_id, field_name,
                                   field_value)
            elif cmd == 'attach_user_group':
                user_id = request.POST.get('user_id')
                group_name = request.POST.get('group_name')
                api.attach_user_group(user_id, group_name)
            elif cmd == 'detach_user_group':
                user_id = request.POST.get('user_id')
                group_name = request.POST.get('group_name')
                api.detach_user_group(user_id, group_name)
            elif cmd == 'get_sessions':
                start_key = request.POST.get('start_key', None)
                result = api.get_sessions(start_key=start_key, limit=20)
                return JsonResponse(result)
            elif cmd == 'get_users':
                start_key = request.POST.get('start_key', None)
                result = api.get_users(start_key=start_key, limit=20)
                return JsonResponse(result)
            elif cmd == 'get_user_rows':
                start_key = request.POST.get('start_key', None)
                query = request.POST.getlist('query[]', [])
                if start_key:
                    start_key = json.loads(start_key)
                result = self._get_user_rows(request,
                                             app_id,
                                             start_key=start_key,
                                             query=query)
                return JsonResponse(result)
            elif cmd == 'get_session_rows':
                start_key = request.POST.get('start_key', None)
                result = self._get_session_rows(request, app_id, start_key)
                return JsonResponse(result)
            elif cmd == 'set_group_session_security_enhancement':
                group_name = request.POST.get('group_name')
                enabled = request.POST.get('enabled')
                if enabled == 'false':
                    enabled = False
                elif enabled == 'true':
                    enabled = True
                result = api.set_group_session_security_enhancement(
                    group_name, enabled)
                return JsonResponse(result)
            elif cmd == 'get_policy_code':
                mode = request.POST.get('mode')
                result = api.get_policy_code('user', mode)
                print(result)
                return JsonResponse(result)
            elif cmd == 'put_policy':
                mode = request.POST.get('mode')
                code = request.POST.get('code')
                result = api.put_policy('user', mode, code)
                return JsonResponse(result)

        return redirect(request.path_info)  # Redirect back