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)
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)
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')
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')
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')
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')
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')
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, '새로운 어플리케이션이 생성되었습니다')
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