teamster 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/VERSION +1 -1
- data/bin/teamster +21 -3
- data/content/views/login.erb +19 -0
- data/lib/teamster/core_helper.rb +26 -0
- data/lib/teamster/general_helper.rb +2 -2
- data/lib/teamster/login.rb +39 -7
- data/lib/teamster/login_helper.rb +23 -0
- data/lib/teamster.rb +14 -31
- metadata +5 -3
- data/config.ru +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d93ad44983fe5b937e8c559ec945eb74a45dda9
|
4
|
+
data.tar.gz: 838c9848d967b9ea66e17b372bb54cc51979a726
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 825caf684e6dbf9711cb325e7543b6c3ff3627cf5605600702c464b27b5b1b88c7968977cfe2da59cd010e3818f164bcf5fe3809680177f9fb2f6ee9ee14b8dc
|
7
|
+
data.tar.gz: 66497ff2540821ce4deb8fa7bceadf39d6482fcde393274895c60a0e4933c69991b6802d73b24ef45d995dfd16ccc5995e8c87f42c0975daa8e2a3690c94d180
|
data/.gitignore
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
pkg/
|
2
|
-
|
2
|
+
todo/
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/bin/teamster
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
require 'getoptlong'
|
5
|
+
require 'yaml'
|
6
|
+
require 'bcrypt'
|
7
|
+
require 'base64'
|
5
8
|
|
6
9
|
DEFAULT_UNIX_SOCKET_FILE = '/tmp/teamster.app.sock'
|
7
10
|
DEFAULT_APP_STATE_FILE = '/srv/my-site/teamster.app.state'
|
@@ -67,6 +70,8 @@ class TeamsterApp
|
|
67
70
|
puts "Creating required content..."
|
68
71
|
FileUtils.mkdir_p "conf"
|
69
72
|
create_config
|
73
|
+
FileUtils.mkdir_p "data"
|
74
|
+
create_user
|
70
75
|
FileUtils.cp_r "#{content}/views", current_working_folder
|
71
76
|
FileUtils.cp_r "#{content}/public", current_working_folder
|
72
77
|
create_file "config.ru", "config_ru"
|
@@ -125,6 +130,19 @@ class TeamsterApp
|
|
125
130
|
File.open(CONFIG_FILE, 'w') {|fh| fh.write @config.to_yaml}
|
126
131
|
end
|
127
132
|
|
133
|
+
def create_user
|
134
|
+
puts "Creating default user.."
|
135
|
+
users = [{"name" => "Administrator", "pass" => b64_enc(BCrypt::Password.create("password"))}]
|
136
|
+
File.open("./data/users", "w") do |fh|
|
137
|
+
fh.write({"users" => users}.to_yaml)
|
138
|
+
end
|
139
|
+
FileUtils.chmod 0600, './data/users'
|
140
|
+
end
|
141
|
+
|
142
|
+
def b64_enc(obj)
|
143
|
+
Base64.strict_encode64(obj)
|
144
|
+
end
|
145
|
+
|
128
146
|
def ask_user_for(opt, question)
|
129
147
|
unless @config[opt]
|
130
148
|
@config[opt] = ask_user question
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="col-lg-12">
|
2
|
+
<div class="col-lg-4"></div>
|
3
|
+
<div class="col-lg-4">
|
4
|
+
<div class="panel panel-default">
|
5
|
+
<div class="panel-body">
|
6
|
+
<form role="form" name="login-form" action="/login" method="post">
|
7
|
+
<div class="form-group">
|
8
|
+
<input type="text" class="form-control" name="user" placeholder="Username">
|
9
|
+
</div>
|
10
|
+
<div class="form-group">
|
11
|
+
<input type="password" class="form-control" name="pass" placeholder="Password">
|
12
|
+
</div>
|
13
|
+
<button id="login-btn" type="submit" class="btn btn-default">Submit</button>
|
14
|
+
</form>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<div class="col-lg-4"></div>
|
19
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Teamster
|
2
|
+
module Core
|
3
|
+
module CoreHelper
|
4
|
+
def summary_div_class_for(index)
|
5
|
+
size = all_modules.size
|
6
|
+
if size == 1
|
7
|
+
"col-lg-12"
|
8
|
+
elsif size%2 == 0
|
9
|
+
"col-lg-6"
|
10
|
+
else
|
11
|
+
last = size - 1
|
12
|
+
index == last ? "col-lg-12" : "col-lg-6"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def summary_of(module_name)
|
17
|
+
name = module_name.downcase
|
18
|
+
if send(:"#{name}_summary?")
|
19
|
+
send(:"#{name}_summary")
|
20
|
+
else
|
21
|
+
erb :no_summary
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -85,8 +85,8 @@ module Teamster
|
|
85
85
|
shuffle ? all_modules.shuffle : all_modules
|
86
86
|
end
|
87
87
|
|
88
|
-
def find_template(views,
|
89
|
-
App.views.each {|v| super(v,
|
88
|
+
def find_template(views, *args, &block)
|
89
|
+
App.views.each {|v| super(v, *args, &block)}
|
90
90
|
end
|
91
91
|
end
|
92
92
|
end
|
data/lib/teamster/login.rb
CHANGED
@@ -1,22 +1,54 @@
|
|
1
|
+
require 'bcrypt'
|
2
|
+
require 'base64'
|
3
|
+
require_relative 'login_helper'
|
4
|
+
|
1
5
|
module Teamster
|
2
6
|
module Core
|
3
7
|
class Login < Sinatra::Base
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
@@referrer = nil
|
9
|
+
@@root = Dir.pwd
|
10
|
+
USERS_FILE = './data/users'
|
11
|
+
|
12
|
+
configure do
|
13
|
+
set :root, @@root
|
14
|
+
set :views, "#{settings.root}/views"
|
15
|
+
set :users, YAML.load_file("#{settings.root}/#{USERS_FILE}").fetch("users")
|
16
|
+
set :referrer, nil
|
9
17
|
end
|
10
18
|
|
19
|
+
helpers GeneralHelper, LoginHelper
|
20
|
+
|
11
21
|
get '/login/?' do
|
12
|
-
|
13
|
-
|
22
|
+
referrer URI::parse(request.referrer)
|
23
|
+
erb :login
|
24
|
+
end
|
25
|
+
|
26
|
+
post '/login' do
|
27
|
+
if user = settings.users.find {|u| u['name'] == params[:user]}
|
28
|
+
if BCrypt::Password.new(decode(user['pass'])) == params[:pass]
|
29
|
+
session[:current_user] = user['name']
|
30
|
+
redirect_back
|
31
|
+
else
|
32
|
+
login_error
|
33
|
+
end
|
34
|
+
else
|
35
|
+
login_error
|
36
|
+
end
|
14
37
|
end
|
15
38
|
|
16
39
|
get '/logout/?' do
|
40
|
+
referrer URI::parse(request.referrer)
|
17
41
|
session[:current_user] = nil
|
18
42
|
redirect_back
|
19
43
|
end
|
44
|
+
|
45
|
+
def self.referrer
|
46
|
+
@@referrer
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.set_referrer_to(path)
|
50
|
+
@@referrer = path
|
51
|
+
end
|
20
52
|
end
|
21
53
|
end
|
22
54
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Teamster
|
2
|
+
module Core
|
3
|
+
module LoginHelper
|
4
|
+
def decode(obj)
|
5
|
+
Base64.decode64 obj
|
6
|
+
end
|
7
|
+
|
8
|
+
def referrer(ref)
|
9
|
+
settings.referrer = ref.path
|
10
|
+
end
|
11
|
+
|
12
|
+
def redirect_back
|
13
|
+
ref = settings.referrer || '/'
|
14
|
+
settings.referrer = nil
|
15
|
+
redirect to ref
|
16
|
+
end
|
17
|
+
|
18
|
+
def login_error
|
19
|
+
halt 403, 'Wrong username or password provided!'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/teamster.rb
CHANGED
@@ -2,9 +2,9 @@ require 'sinatra/base'
|
|
2
2
|
require 'yaml'
|
3
3
|
require 'json'
|
4
4
|
require 'uri'
|
5
|
-
require_relative 'teamster/login'
|
6
5
|
require_relative 'teamster/general_helper'
|
7
|
-
require_relative 'teamster/
|
6
|
+
require_relative 'teamster/core_helper'
|
7
|
+
require_relative 'teamster/login'
|
8
8
|
|
9
9
|
module Teamster
|
10
10
|
module Core
|
@@ -12,7 +12,8 @@ module Teamster
|
|
12
12
|
@@modules = []
|
13
13
|
@@views = []
|
14
14
|
@@title = 'TEAMSTER'
|
15
|
-
|
15
|
+
@@root = Dir.pwd
|
16
|
+
CORE_CONFIG = './conf/teamster.conf'
|
16
17
|
|
17
18
|
# NOTE: Class methods used in configure block needs be declared
|
18
19
|
# before the configure block.
|
@@ -20,47 +21,23 @@ module Teamster
|
|
20
21
|
@@title = core_opts[:title]
|
21
22
|
end
|
22
23
|
|
23
|
-
def self.current_working_folder
|
24
|
-
Dir.pwd
|
25
|
-
end
|
26
|
-
|
27
24
|
configure do
|
28
|
-
set :root,
|
25
|
+
set :root, @@root
|
26
|
+
set :referrer, nil
|
29
27
|
@@views << "#{settings.root}/views"
|
30
28
|
enable :sessions
|
31
29
|
set :session_secret, 'THIS IS MY SESSION SECRET KEY'
|
32
|
-
set :core_opts, YAML.load_file(CORE_CONFIG)
|
30
|
+
set :core_opts, YAML.load_file("#{settings.root}/#{CORE_CONFIG}")
|
33
31
|
set_default_options_from settings.core_opts
|
34
32
|
use Login
|
35
33
|
end
|
36
34
|
|
37
|
-
helpers GeneralHelper
|
35
|
+
helpers GeneralHelper, CoreHelper
|
38
36
|
|
39
37
|
get '/' do
|
40
38
|
erb :index
|
41
39
|
end
|
42
40
|
|
43
|
-
def summary_div_class_for(index)
|
44
|
-
size = all_modules.size
|
45
|
-
if size == 1
|
46
|
-
"col-lg-12"
|
47
|
-
elsif size%2 == 0
|
48
|
-
"col-lg-6"
|
49
|
-
else
|
50
|
-
last = size - 1
|
51
|
-
index == last ? "col-lg-12" : "col-lg-6"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def summary_of(module_name)
|
56
|
-
name = module_name.downcase
|
57
|
-
if send(:"#{name}_summary?")
|
58
|
-
send(:"#{name}_summary")
|
59
|
-
else
|
60
|
-
erb :no_summary
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
41
|
def self.modules
|
65
42
|
@@modules
|
66
43
|
end
|
@@ -73,6 +50,10 @@ module Teamster
|
|
73
50
|
@@title
|
74
51
|
end
|
75
52
|
|
53
|
+
def self.current_working_folder
|
54
|
+
@@root
|
55
|
+
end
|
56
|
+
|
76
57
|
def self.use_module(teamster_module)
|
77
58
|
if @@modules.include? teamster_module
|
78
59
|
puts "Module #{teamster_module} already registered!"
|
@@ -91,3 +72,5 @@ module Teamster
|
|
91
72
|
end
|
92
73
|
end
|
93
74
|
end
|
75
|
+
|
76
|
+
require_relative 'teamster/base_module'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teamster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nur Muhammad Bin Sirat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puma
|
@@ -53,7 +53,6 @@ files:
|
|
53
53
|
- Rakefile
|
54
54
|
- VERSION
|
55
55
|
- bin/teamster
|
56
|
-
- config.ru
|
57
56
|
- content/public/css/bootstrap.min.css
|
58
57
|
- content/public/css/styles.css
|
59
58
|
- content/public/fonts/glyphicons-halflings-regular.eot
|
@@ -66,13 +65,16 @@ files:
|
|
66
65
|
- content/views/footer.erb
|
67
66
|
- content/views/index.erb
|
68
67
|
- content/views/layout.erb
|
68
|
+
- content/views/login.erb
|
69
69
|
- content/views/login_required.erb
|
70
70
|
- content/views/navbar.erb
|
71
71
|
- content/views/no_summary.erb
|
72
72
|
- lib/teamster.rb
|
73
73
|
- lib/teamster/base_module.rb
|
74
|
+
- lib/teamster/core_helper.rb
|
74
75
|
- lib/teamster/general_helper.rb
|
75
76
|
- lib/teamster/login.rb
|
77
|
+
- lib/teamster/login_helper.rb
|
76
78
|
- teamster.gemspec
|
77
79
|
homepage: https://github.com/Umartyya/teamster
|
78
80
|
licenses:
|
data/config.ru
DELETED