diff --git a/src/main/scala/app/AccountController.scala b/src/main/scala/app/AccountController.scala index 6691bcc..b32d5df 100644 --- a/src/main/scala/app/AccountController.scala +++ b/src/main/scala/app/AccountController.scala @@ -6,6 +6,7 @@ import util.Directory._ import jp.sf.amateras.scalatra.forms._ import org.scalatra.FlashMapSupport +import org.apache.commons.io.FileUtils class AccountController extends AccountControllerBase with SystemSettingsService with AccountService with RepositoryService with ActivityService @@ -97,6 +98,27 @@ } getOrElse NotFound }) + get("/:userName/_delete")(oneselfOnly { + val userName = params("userName") + + getAccountByUserName(userName, true).foreach { account => + // Remove repositories + getRepositoryNamesOfUser(userName).foreach { repositoryName => + deleteRepository(userName, repositoryName) + FileUtils.deleteDirectory(getRepositoryDir(userName, repositoryName)) + FileUtils.deleteDirectory(getWikiRepositoryDir(userName, repositoryName)) + FileUtils.deleteDirectory(getTemporaryDir(userName, repositoryName)) + } + // Remove from GROUP_MEMBER, COLLABORATOR and REPOSITORY + removeUserRelatedData(userName) + + updateAccount(account.copy(isRemoved = true)) + } + + session.invalidate + redirect("/") + }) + get("/register"){ if(loadSystemSettings().allowAccountRegistration){ if(context.loginAccount.isDefined){ diff --git a/src/main/twirl/account/edit.scala.html b/src/main/twirl/account/edit.scala.html index 8d8ca9a..5213ddc 100644 --- a/src/main/twirl/account/edit.scala.html +++ b/src/main/twirl/account/edit.scala.html @@ -56,6 +56,9 @@
} + \ No newline at end of file