mirror of
https://github.com/HackPlan/RootPanel.git
synced 2026-05-29 23:30:57 +08:00
50 lines
1.6 KiB
CoffeeScript
50 lines
1.6 KiB
CoffeeScript
jade = require 'jade'
|
|
path = require 'path'
|
|
mysql = require 'mysql'
|
|
async = require 'async'
|
|
|
|
config = require '../../config'
|
|
plugin = require '../../core/plugin'
|
|
|
|
mAccount = require '../../core/model/account'
|
|
|
|
connection = mysql.createConnection config.plugins.mysql.connection
|
|
connection.connect()
|
|
|
|
module.exports =
|
|
enable: (account, callback) ->
|
|
connection.query "CREATE USER '#{account.username}'@'localhost' IDENTIFIED BY '#{mAccount.randomSalt()}';", (err, rows) ->
|
|
throw err if err
|
|
|
|
connection.query "GRANT ALL PRIVILEGES ON `#{account.username}\\_%%` . * TO '#{account.username}'@'localhost';", (err, rows) ->
|
|
throw err if err
|
|
callback()
|
|
|
|
delete: (account, callback) ->
|
|
connection.query "DROP USER '#{account.username}'@'localhost';", (err, rows) ->
|
|
throw err if err
|
|
|
|
connection.query 'show databases;', (err, rows) ->
|
|
throw err if err
|
|
|
|
databases_to_delete = _.filter _.pluck(rows, 'Database'), (item) ->
|
|
if item[..account.username.length] == "#{account.username}_"
|
|
return true
|
|
else
|
|
return false
|
|
|
|
async.each databases_to_delete, (name, callback) ->
|
|
connection.query "DROP DATABASE `#{name}`;", (err, rows) ->
|
|
throw err if err
|
|
callback()
|
|
, ->
|
|
callback()
|
|
|
|
widget: (account, callback) ->
|
|
jade.renderFile path.join(__dirname, 'view/widget.jade'), {}, (err, html) ->
|
|
callback html
|
|
|
|
preview: (callback) ->
|
|
jade.renderFile path.join(__dirname, 'view/preview.jade'), {}, (err, html) ->
|
|
callback html
|