gennaro 0.3.2.1 → 0.3.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb5cbc7f0475b5992ba8c1ea4dc14c115403f2f5
4
- data.tar.gz: ecef9dc7e209dfc132ccd25fcef214c42cdba74b
3
+ metadata.gz: 736ce9fd63b913dff9a5d1620a7487d7eee9f87c
4
+ data.tar.gz: 185ec1cfb4c872fbc2b2f2c300f92d92d079745f
5
5
  SHA512:
6
- metadata.gz: f9d26ac5edf7b4d3b1288c1b075c91182b7202e07aa9aef2bd7ae93ba66c4773526b2cb1648d3da0cc33dc8c2c24b778d8228e09e9741fdf6ca5dcc0b5ae43c6
7
- data.tar.gz: 40ca8ce8866a00bd2a13970e7ac577f760e281f6bb05cc8054490152999be87a8e4b800a63f70cc1fbce7041b90518cd85d0507711de5e34debb827c1692018b
6
+ metadata.gz: f97009f17bd4ac06754f6eb794e5f3edfeb2b7199917ea6d1903bb22e46f4635c0feca5129309e275b27bb61c4cc1e071971122dc9c59c448ae0e2fbd9b3e8c5
7
+ data.tar.gz: fe65d76d7e25c7e5d3ac550e85cd1d92907ee70c4d817b2b2109b7ee4fc171c5ed1441fdc27a63d599c37bb9215f5619e78ad03a8e891b4725ff4682d1af213e
@@ -10,6 +10,6 @@
10
10
 
11
11
  class Gennaro
12
12
  def self.version
13
- '0.3.2.1'
13
+ '0.3.2.2'
14
14
  end
15
15
  end
@@ -41,6 +41,17 @@ class ${ClassName}
41
41
  erb :'user/password_recovery'
42
42
  end
43
43
 
44
+ get '/user/change_level/?' do
45
+ if not logged_in?
46
+ @error = 'You need to log in.'
47
+ elsif not current_user.staff?
48
+ @error = 'Go home, this is not a place for you.'
49
+ else
50
+ @users = User.all
51
+ end
52
+ erb :'user/change_level'
53
+ end
54
+
44
55
  post '/user/login/?' do
45
56
  if not fields? :username, :password
46
57
  @error = 'You have to complete all the required fields.'
@@ -108,4 +119,38 @@ class ${ClassName}
108
119
 
109
120
  erb :'user/password_recovery'
110
121
  end
122
+
123
+ post '/user/change_level/?' do
124
+ if not logged_in?
125
+ @error = 'You need to log in.'
126
+ elsif not current_user.staff?
127
+ @error = 'Go home, this is not a place for you.'
128
+ elsif fields? :username, :go
129
+ @user = User.get params[:username]
130
+ @levels = User.levels
131
+ elsif not fields? :username, :level
132
+ @error = 'To change a user level, you need to send his username and level.'
133
+ else
134
+ level = case # I guess using #send could be dangerous
135
+ when 'banned' then User.banned
136
+ when 'founder' then User.founder
137
+ when 'admin' then User.admin
138
+ when 'smod' then User.smod
139
+ when 'mod' then User.mod
140
+ when 'user' then User.user
141
+ else nil
142
+ end
143
+ if level.nil?
144
+ @error = 'User level not recognized.'
145
+ else
146
+ user = User.change_level params[:username], level
147
+ if user
148
+ @success = 'User level set successful.'
149
+ else
150
+ @error = 'Error setting the user level.'
151
+ end
152
+ end
153
+ end
154
+ erb :'user/change_level'
155
+ end
111
156
  end
@@ -12,16 +12,16 @@ class User
12
12
  include DataMapper::Resource
13
13
 
14
14
  property :id, Serial
15
- property :username, String, :unique => true,
16
- :length => 4..16,
17
- :format => /^[a-zA-Z0-9_\-\*^]*$/
18
- property :email, String, :unique => true,
19
- :format => :email_address
15
+ property :username, String, unique: true,
16
+ length: 4..16,
17
+ format: /^[a-zA-Z0-9_\-\*^]*$/
18
+ property :email, String, unique: true,
19
+ format: :email_address
20
20
 
21
- property :permission_level, Integer, :default => 3
21
+ property :permission_level, Integer, default: 4
22
22
 
23
- property :salt, String, :length => 29
24
- property :salted_password, String, :length => 60
23
+ property :salt, String, length: 29
24
+ property :salted_password, String, length: 60
25
25
  property :lost_password, String
26
26
  property :session, String
27
27
 
@@ -78,6 +78,10 @@ class User
78
78
  end
79
79
  alias_method :logout!, :logout
80
80
 
81
+ def change_level(permission_level)
82
+ self.permission_level = permission_level
83
+ end
84
+
81
85
  class << self
82
86
  def banned
83
87
  -1
@@ -108,6 +112,18 @@ class User
108
112
  5
109
113
  end
110
114
 
115
+ def levels
116
+ {
117
+ :banned => User.banned,
118
+ :founder => User.founder,
119
+ :admin => User.admin,
120
+ :smod => User.smod,
121
+ :gmod => User.gmod,
122
+ :mod => User.mod,
123
+ :user => User.user
124
+ }
125
+ end
126
+
111
127
  def empty?
112
128
  User.count == 0
113
129
  end
@@ -162,5 +178,11 @@ class User
162
178
  :password => password
163
179
  })
164
180
  end
181
+
182
+ def change_level(username, permission_level)
183
+ user = User.first username: username
184
+ return false unless user
185
+ user.update permission_level: permission_level
186
+ end
165
187
  end
166
188
  end
@@ -4,7 +4,7 @@ require './spec'
4
4
  require 'rspec'
5
5
  require 'rack/test'
6
6
 
7
- describe '${ClassName}' do
7
+ describe 'Pigro' do
8
8
  def app
9
9
  Sinatra::Application
10
10
  end
@@ -60,4 +60,17 @@ describe '${ClassName}' do
60
60
 
61
61
  User.login(username, new_password).should be_true
62
62
  end
63
+
64
+ it 'change the user level' do
65
+ username = 'Gennaro'
66
+ password = 'sonounnuovobullo!'
67
+
68
+ User.login(username, password).should be_true
69
+
70
+ user = User.get username
71
+ user.founder?
72
+
73
+ user.change_level User.banned
74
+ user.banned?
75
+ end
63
76
  end
@@ -0,0 +1,35 @@
1
+ <% @title = 'Change user level' %>
2
+ <%= erb :'template/header' %>
3
+
4
+ <% if defined? @error %>
5
+ <p class="error"><%= @error %></p>
6
+ <% elsif defined? @success %>
7
+ <p class="success"><%= @success %></p>
8
+ <% elsif defined? @users %>
9
+ <form action="<%= @current_url %>" method="post">
10
+
11
+ <select name="username">
12
+ <% @users.each { |user| %>
13
+ <option value="<%= user.username %>"><%= user.username %></option>
14
+ <% } %>
15
+ </select><br />
16
+
17
+ <%= csrf_tag %>
18
+ <input type="submit" name="go" value="Change">
19
+ </form>
20
+ <% else %>
21
+ <form action="<%= @current_url %>" method="post">
22
+
23
+ <select name="level">
24
+ <% @levels.each_pair { |key, val| %>
25
+ <option value="<%= key %>" <%= 'selected' if val == @user.permission_level %>><%= key.capitalize %></option>
26
+ <% } %>
27
+ </select><br />
28
+
29
+ <%= csrf_tag %>
30
+ <input type="hidden" value="<%= @user.username %>" name="username">
31
+ <input type="submit" value="Change">
32
+ </form>
33
+ <% end %>
34
+
35
+ <%= erb :'template/footer' %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gennaro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2.1
4
+ version: 0.3.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giovanni Capuano
@@ -66,6 +66,7 @@ files:
66
66
  - templates/authentication/views/index.erb
67
67
  - templates/authentication/views/template/footer.erb
68
68
  - templates/authentication/views/template/header.erb
69
+ - templates/authentication/views/user/change_level.erb
69
70
  - templates/authentication/views/user/login.erb
70
71
  - templates/authentication/views/user/logout.erb
71
72
  - templates/authentication/views/user/lost_password.erb