OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-28 0f59a76b263ba6cd79380a729f38bfca92a907dd
src/main/webapp/scripts/app/api/apiAuth.controller.js
@@ -7,20 +7,128 @@
        'app', 'angular'
    ],
    function (app, angular) {
        app.controller('apiAuthController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'SweetAlert', '$timeout', '$filter',
            function ($scope, $rootScope, $log, $resourceProvider, SweetAlert, $timeout, $filter) {
        app.controller('apiAuthController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$state', 'Api', 'SweetAlert', '$timeout', '$filter',
            function ($scope, $rootScope, $log, $resourceProvider, $state, Api, SweetAlert, $timeout, $filter) {
                $scope.fn = {
                    formSubmit : formSubmit,
                    remove : remove,
                    find : find,
                    formCheck : formCheck,
                    copyToken : copyToken
                };
                $scope.vm = {
                    responseData : {
                        data : []
                    },
                    form : {
                        name : "홈페이지 변조 탐지 시스템",
                        token : "77751b541212de21a44f87024174d3bd"
                        appName : "",
                        token : ""
                    }
                };
                //  폼 체크
                function formCheck(formInvalid) {
                    if (formInvalid) {
                        return true;
                    }
                    return false;
                }
                function formSubmit() {
                    var conditions = {
                        appName : $scope.vm.form.appName
                    }
                    Api.add($resourceProvider.getContent(conditions,
                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if (angular.isDefined(result.data.data)) {
                                $scope.vm.form.token = result.data.data.token;
                            }
                            SweetAlert.swal($filter("translate")("api.successToApiTokenAdd"), result.data.message.message, "success"); // "api 토큰 생성 성공"
                        }
                        else {
                            SweetAlert.swal($filter("translate")("api.failedToApiTokenAdd"), result.data.message.message, "error"); // "api 토큰 생성 실패"
                        }
                    });
                }
                function remove() {
                    var content = {
                        id : ""
                    }
                    Api.remove($resourceProvider.getContent(content,
                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
                        if (result.data.message.status === "success") {
                            $scope.vm.form.token = "";
                            SweetAlert.swal($filter("translate")("api.successToApiTokenRemove"), result.data.message.message, "success"); // "api 토큰 생성 성공"
                        }
                        else {
                            SweetAlert.swal($filter("translate")("api.failedToApiTokenRemove"), result.data.message.message, "error"); // "api 토큰 삭제 실패"
                        }
                    });
                }
                // navigator.clipboard 는 브라우저 보안이나 활성화 여부에 따라 사용이 안될때가 있음
                function copyToClipboard(textToCopy) {
                    // navigator clipboard api needs a secure context (https)
                    if (navigator.clipboard && window.isSecureContext) {
                        // navigator clipboard api method'
                        return navigator.clipboard.writeText(textToCopy);
                    } else {
                        // text area method
                        let textArea = document.createElement("textarea");
                        textArea.value = textToCopy;
                        // make the textarea out of viewport
                        textArea.style.position = "fixed";
                        textArea.style.left = "-999999px";
                        textArea.style.top = "-999999px";
                        document.body.appendChild(textArea);
                        textArea.focus();
                        textArea.select();
                        return new Promise((res, rej) => {
                            // here the magic happens
                            document.execCommand('copy') ? res() : rej();
                            textArea.remove();
                        });
                    }
                }
                function copyToken() {
                    copyToClipboard($scope.vm.form.token)
                        .then(() =>
                            SweetAlert.swal($filter("translate")("api.successToApiTokenCopy"))
                        )
                        .catch(() => SweetAlert.error($filter("translate")("api.failedToApiTokenCopy")))
                }
                function find() {
                    var conditions = {
                        appName : $scope.vm.form.appName
                    }
                    Api.find($resourceProvider.getContent(conditions,
                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if (result.data.data != null) {
                                $scope.vm.form.appName = result.data.data.appName;
                                $scope.vm.form.token = result.data.data.token;
                            }
                        }
                        else {
                            SweetAlert.swal($filter("translate")("api.failedToApiTokenFind"), result.data.message.message, "error"); // "api 토큰 조회 실패"
                        }
                    });
                }
                $scope.fn.find();
            }]);
    });