doortts doortts 2016-11-27
migration: Add migration options at application.conf
To migrate, following options are required at application.conf

application.conf
----
github.allow.migration = false
github.client.id = "TYPE YOUR GITHUB CILENT ID"
github.client.secret = "TYPE YOUR GITHUB CILENT SECRET"
@20cf619a219b18c1054324403148342e58d46368
app/controllers/MigrationApp.java
--- app/controllers/MigrationApp.java
+++ app/controllers/MigrationApp.java
@@ -15,11 +15,14 @@
 import models.enumeration.ResourceType;
 import models.support.IssueLabelAggregate;
 import org.apache.commons.lang.StringUtils;
+import play.Configuration;
+import play.i18n.Messages;
 import play.libs.F;
 import play.libs.F.Promise;
 import play.libs.Json;
 import play.libs.ws.WS;
 import play.mvc.Result;
+import utils.ErrorViews;
 import views.html.migration.home;
 
 import javax.validation.constraints.NotNull;
@@ -34,6 +37,7 @@
 
 import static play.libs.Json.toJson;
 import static play.mvc.Http.Context.Implicit.request;
+import static play.mvc.Results.forbidden;
 import static play.mvc.Results.ok;
 
 @AnonymousCheck
@@ -43,8 +47,13 @@
     private static final String YONA_SERVER = "/";
 
 
+
     @AnonymousCheck(requiresLogin = true, displaysFlashMessage = true)
     public static Promise<Result> migration() {
+        final boolean isAllowed = Configuration.root().getBoolean("github.allow.migration", false);
+        if(!isAllowed){
+            return Promise.pure(forbidden(ErrorViews.Forbidden.render("error.forbidden.or.not.allowed")));
+        }
         String authProcessingCode = request().getQueryString("code");
 
         if(StringUtils.isNotBlank(authProcessingCode)){
@@ -57,9 +66,9 @@
     }
 
     private static Promise<String> getOAuthToken(String code) {
-        final String CLIENT_ID = "e7f9ad76a3a4ba19b2a5";
-        final String CLIENT_SECRET = "32e7fb33ee5c42501cb2aac9a6f6c485bf285cf5";
         final String ACCESS_TOKEN_URL = "https://github.com/login/oauth/access_token";
+        final String CLIENT_ID = Configuration.root().getString("github.client.id");
+        final String CLIENT_SECRET = Configuration.root().getString("github.client.secret");
 
         return WS.url(ACCESS_TOKEN_URL)
                 .setContentType("application/x-www-form-urlencoded")
conf/application.conf.default
--- conf/application.conf.default
+++ conf/application.conf.default
@@ -242,3 +242,12 @@
 
 # Display private repositories in the list
 application.displayPrivateRepositories = false
+
+
+# Github Migration
+# ~~~~~~~~~~~~~~~~~
+# User can migrate their own projects to github
+#
+github.allow.migration = false
+github.client.id = "TYPE YOUR GITHUB CILENT ID"
+github.client.secret = "TYPE YOUR GITHUB CILENT SECRET"
(No newline at end of file)
conf/messages
--- conf/messages
+++ conf/messages
@@ -194,6 +194,7 @@
 error.failedTo = Failed to {0}<br>({1} {2})
 error.forbidden = You are not authorized
 error.forbidden.or.notfound = Project not exists or unauthorized user
+error.forbidden.or.not.allowed = Forbidden or not allowed request
 error.timeout = Your request could not be processed because of server timeout
 error.internalServerError = Server error has occurred; service is not available
 error.notfound = Page not found
conf/messages.ko-KR
--- conf/messages.ko-KR
+++ conf/messages.ko-KR
@@ -194,6 +194,7 @@
 error.failedTo = {0}에 실패했습니다.<br>({1} {2})
 error.forbidden = 권한이 없습니다
 error.forbidden.or.notfound = 권한이 없거나 존재하지 않는 프로젝트입니다.
+error.forbidden.or.not.allowed = 권한이 없거나 허용하지 않는 요청입니다.
 error.timeout = 요청 처리가 너무 오래 걸려 중단되었습니다
 error.internalServerError = 서버 오류가 발생하여 서비스를 이용할 수 없습니다
 error.notfound = 페이지를 찾을 수 없습니다
Add a comment
List