ucb_rails 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +21 -11
- data/Rakefile +1 -1
- data/app/assets/images/seal.png +0 -0
- data/app/assets/stylesheets/ucb_rails.css.scss +7 -0
- data/app/assets/stylesheets/ucb_rails/berkeley-colors.sass +27 -0
- data/app/assets/stylesheets/ucb_rails/bootstrap-view-helpers.sass +4 -0
- data/app/assets/stylesheets/ucb_rails/branding.sass +66 -0
- data/app/assets/stylesheets/ucb_rails/buttons.sass +2 -0
- data/app/assets/stylesheets/ucb_rails/common.sass +30 -0
- data/app/assets/stylesheets/ucb_rails/nav.sass +51 -0
- data/app/assets/stylesheets/ucb_rails/typography.sass +43 -0
- data/app/assets/stylesheets/ucb_rails/variables.sass +26 -0
- data/app/controllers/ucb_rails/admin/users_controller.rb +2 -2
- data/app/controllers/ucb_rails/bootstrap_controller.rb +1 -1
- data/app/datatables/ucb_rails/base_datatable.rb +2 -0
- data/app/datatables/ucb_rails/users_datatable.rb +11 -10
- data/app/models/ucb_rails/configuration/email.rb +1 -1
- data/app/models/ucb_rails/ldap_person/entry.rb +20 -13
- data/app/models/ucb_rails/ldap_person/finder.rb +16 -4
- data/app/models/ucb_rails/ldap_person/test_finder.rb +16 -9
- data/app/models/ucb_rails/user.rb +21 -13
- data/app/models/ucb_rails/user_ldap_service.rb +11 -10
- data/app/models/ucb_rails/user_typeahead.rb +20 -2
- data/app/views/ucb_rails/admin/email_test/index.html.haml +1 -1
- data/app/views/ucb_rails/admin/users/_form.html.haml +1 -0
- data/app/views/ucb_rails/admin/users/_user.html.haml +4 -3
- data/app/views/ucb_rails/admin/users/index.html.haml +2 -1
- data/app/views/ucb_rails/home/logged_in.html.haml +5 -2
- data/config/routes.rb +7 -7
- data/lib/generators/ucb_rails/install_generator.rb +10 -1
- data/lib/generators/ucb_rails/templates/app/assets/javascripts/application.js +1 -0
- data/lib/generators/ucb_rails/templates/app/assets/javascripts/ucb_rails/users_datatable.js +1 -1
- data/lib/generators/ucb_rails/templates/app/assets/stylesheets/application.css +1 -0
- data/lib/generators/ucb_rails/templates/app/assets/stylesheets/bootstrap_and_overrides.css.scss +4 -3
- data/lib/generators/ucb_rails/templates/app/views/layouts/_footer.html.haml +1 -1
- data/lib/generators/ucb_rails/templates/app/views/layouts/_navigation.html.haml +22 -19
- data/lib/generators/ucb_rails/templates/app/views/layouts/application.html.haml +3 -3
- data/lib/ucb_rails.rb +2 -1
- data/lib/ucb_rails/version.rb +1 -1
- metadata +111 -229
- data/lib/generators/ucb_rails/templates/app/assets/stylesheets/ucb_rails.css.scss +0 -56
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 847162c41f4ac6964dfc23f26f0f1d968562bf7e
|
4
|
+
data.tar.gz: e7b409a5d0ad22e8ab523a8c79a3e5144a618bf0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 933bdac9da8cdb6aff405a0dc2a37763f4e5171c239cadb58181c1f76663b668650c3c0a38b751bdac204c6290e9d32d92c9b926fb20883321cac254377db96f
|
7
|
+
data.tar.gz: a9f654f4b1c10b5b682eb1785b5601a445687dd2e4ea973ae217d089e67fb49544d795ec600d7130e23139100a14226d9d6dd2d6a28588d394d548635c4c6e8e
|
data/README.md
CHANGED
@@ -1,16 +1,11 @@
|
|
1
|
-
# UCB Rails
|
2
|
-
|
3
|
-
[](http://badge.fury.io/rb/ucb_rails)
|
4
|
-
[](https://travis-ci.org/stevedowney/ucb_rails)
|
5
|
-
[](https://coveralls.io/r/stevedowney/ucb_rails?branch=master)
|
6
|
-
[](https://codeclimate.com/github/stevedowney/ucb_rails)
|
1
|
+
# UCB Rails (Rails 4 Compatible, see master branch for Rails 3)
|
7
2
|
|
8
3
|
Get a jump start on your Rails project at UCB. Includes:
|
9
4
|
|
10
5
|
* CalNet authentication with [omniauth-cas](https://github.com/dlindahl/omniauth-cas)
|
11
6
|
* LDAP integration with [ucb_ldap](https://rubygems.org/gems/ucb_ldap)
|
12
7
|
* includes several other gems including:
|
13
|
-
* [bootstrap-view-helpers](https://github.com/
|
8
|
+
* [bootstrap-view-helpers](https://github.com/ucb-ist-eas/bootstrap-view-helpers/tree/rails4)
|
14
9
|
* [user_announcements](https://github.com/stevedowney/user_announcements)
|
15
10
|
* [rails_environment](https://github.com/stevedowney/rails_environment)
|
16
11
|
|
@@ -20,9 +15,8 @@ Add it to your Gemfile
|
|
20
15
|
|
21
16
|
```ruby
|
22
17
|
gem 'ucb_rails'
|
23
|
-
|
24
|
-
|
25
|
-
gem 'ucb_rails', git: 'https://github.com/stevedowney/ucb_rails'
|
18
|
+
# 'bootstrap-view-helpers' needs to be added as well
|
19
|
+
gem 'bootstrap-view-helpers', github: 'ucb-ist-eas/bootstrap-view-helpers', branch: 'rails4'
|
26
20
|
```
|
27
21
|
|
28
22
|
From the command line, install the `ucb_rails` gem:
|
@@ -49,7 +43,17 @@ Remove superseded files:
|
|
49
43
|
|
50
44
|
```sh
|
51
45
|
rm public/index.html
|
52
|
-
|
46
|
+
```
|
47
|
+
|
48
|
+
Add includes to application stylesheet
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
*= require bootstrap-datepicker3
|
52
|
+
```
|
53
|
+
|
54
|
+
Add includes to application javascript
|
55
|
+
```ruby
|
56
|
+
//= require bootstrap-datepicker
|
53
57
|
```
|
54
58
|
|
55
59
|
Restart your server and point your browser to:
|
@@ -68,4 +72,10 @@ host app (if any) will take precedence.
|
|
68
72
|
* `current_ldap_person`
|
69
73
|
* `logged_in?`
|
70
74
|
|
75
|
+
## Upgrading From An Older Version
|
71
76
|
|
77
|
+
If you're upgrading from a version older than March 2015, you'll need to run an extra migration in the project that contains the ucb_rails gem. This will add an `alternate_email` column to your users table.
|
78
|
+
|
79
|
+
```
|
80
|
+
cp ucb_rails/dummy/db/migrate//20150318234744_add_alternate_email_to_users.rb [YOUR_PROJECT_ROOT]/db/migrate
|
81
|
+
```
|
data/Rakefile
CHANGED
@@ -20,7 +20,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
20
20
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
21
|
end
|
22
22
|
|
23
|
-
APP_RAKEFILE = File.expand_path("../
|
23
|
+
APP_RAKEFILE = File.expand_path("../dummy/Rakefile", __FILE__)
|
24
24
|
load 'rails/tasks/engine.rake'
|
25
25
|
|
26
26
|
|
Binary file
|
@@ -0,0 +1,27 @@
|
|
1
|
+
$pri-blue: #003262
|
2
|
+
$pri-yellow: #FDB515
|
3
|
+
|
4
|
+
$alt-blue: #3B7EA1
|
5
|
+
$alt-yellow: #E09E19
|
6
|
+
|
7
|
+
$neu-gray: #C2B9A7
|
8
|
+
$neu-orange: #D9661F
|
9
|
+
$neu-green: #B9D3B6
|
10
|
+
|
11
|
+
$vib-blue: #00B0DA
|
12
|
+
$vib-orange: #EE1F60
|
13
|
+
$vib-yellow: #CFDD45
|
14
|
+
|
15
|
+
$bri-blue: #00B2A5
|
16
|
+
$bri-orange: #ED4E33
|
17
|
+
$bri-yellow: #9DAD33
|
18
|
+
|
19
|
+
$dar-blue: #53626F
|
20
|
+
$dar-orange: #6C3302
|
21
|
+
$dar-yellow: #584F29
|
22
|
+
|
23
|
+
$light-gray: rgba(255, 255, 255, 0.62)
|
24
|
+
$medium-gray: #DADADA
|
25
|
+
$dark-gray: #A5A5A5
|
26
|
+
$light-yellow: #FFF5DF
|
27
|
+
$light-blue: #E7F6FF
|
@@ -0,0 +1,66 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
body
|
4
|
+
background-image: asset-data-url("seal.png")
|
5
|
+
background-position: 105% 0px
|
6
|
+
background-repeat: no-repeat
|
7
|
+
background-size: 36%
|
8
|
+
background-attachment: fixed
|
9
|
+
background-color: $body-bg
|
10
|
+
|
11
|
+
h1, h2, h3
|
12
|
+
color: #00B0DA
|
13
|
+
|
14
|
+
.nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus
|
15
|
+
background-color: $body-bg !important
|
16
|
+
|
17
|
+
html body .nav > li > a:hover, html body .nav > li > a:focus
|
18
|
+
background-color: $vib-blue
|
19
|
+
color: white
|
20
|
+
|
21
|
+
html body .form-actions
|
22
|
+
background-color: transparent
|
23
|
+
border-top: none
|
24
|
+
|
25
|
+
.nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus
|
26
|
+
border-radius: 3px
|
27
|
+
|
28
|
+
.nav-header,a
|
29
|
+
text-shadow: none !important
|
30
|
+
|
31
|
+
html body .alert
|
32
|
+
display: inline-block
|
33
|
+
|
34
|
+
html body .sidebar-nav
|
35
|
+
padding: 10px 0
|
36
|
+
|
37
|
+
.nav-header
|
38
|
+
border-top: 1px solid white
|
39
|
+
|
40
|
+
&:first-child
|
41
|
+
border-top: 0
|
42
|
+
|
43
|
+
.nav-header,
|
44
|
+
.nav-list a
|
45
|
+
padding: 10px 15px
|
46
|
+
margin-left: 0
|
47
|
+
margin-right: 0
|
48
|
+
|
49
|
+
.nav-list a
|
50
|
+
display: block
|
51
|
+
|
52
|
+
html body .well
|
53
|
+
border: 1px solid $pri-blue
|
54
|
+
border-radius: 3px
|
55
|
+
background: rgba(245, 245, 245, 0.41)
|
56
|
+
|
57
|
+
.nav-list
|
58
|
+
padding: 0
|
59
|
+
|
60
|
+
.field_with_errors
|
61
|
+
display: inline-block
|
62
|
+
|
63
|
+
.alert-error, .field_with_errors input, .field_with_errors select
|
64
|
+
background-color: #f2dede !important
|
65
|
+
border-color: #eed3d7 !important
|
66
|
+
color: #b94a48 !important
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
table
|
6
|
+
th.c, td.c
|
7
|
+
text-align: center
|
8
|
+
|
9
|
+
th.min, td.min
|
10
|
+
width: 1%
|
11
|
+
|
12
|
+
#lps-modal
|
13
|
+
width: 750px
|
14
|
+
|
15
|
+
form
|
16
|
+
input[type="text"]
|
17
|
+
width: 140px
|
18
|
+
margin-right: 10px
|
19
|
+
|
20
|
+
#lps-search
|
21
|
+
margin-left: 20px
|
22
|
+
margin-right: 10px
|
23
|
+
|
24
|
+
tr.ldap-result-exists
|
25
|
+
opacity: 0.5
|
26
|
+
|
27
|
+
div.control-group.lps-typeahead
|
28
|
+
i.ldap-person-search
|
29
|
+
cursor: pointer
|
30
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
.navbar
|
2
|
+
|
3
|
+
.dropdown-menu .dropdown:hover
|
4
|
+
@include gradient-vertical($dropdown-link-hover-bg, darken($dropdown-link-hover-bg, 5%))
|
5
|
+
color: white !important
|
6
|
+
|
7
|
+
.dropdown-menu:before
|
8
|
+
position: absolute
|
9
|
+
top: -7px
|
10
|
+
left: 9px
|
11
|
+
display: inline-block
|
12
|
+
border-right: 7px solid transparent
|
13
|
+
border-bottom: 7px solid #ccc
|
14
|
+
border-left: 7px solid transparent
|
15
|
+
border-bottom-color: rgba(0, 0, 0, 0.2)
|
16
|
+
content: ''
|
17
|
+
|
18
|
+
.dropdown-menu:after
|
19
|
+
position: absolute
|
20
|
+
top: -6px
|
21
|
+
left: 10px
|
22
|
+
display: inline-block
|
23
|
+
border-right: 6px solid transparent
|
24
|
+
border-bottom: 6px solid #ffffff
|
25
|
+
border-left: 6px solid transparent
|
26
|
+
content: ''
|
27
|
+
|
28
|
+
.navbar-right > li > .dropdown-menu:before,
|
29
|
+
.nav > li > .dropdown-menu.navbar-right:before
|
30
|
+
right: 12px
|
31
|
+
left: auto
|
32
|
+
|
33
|
+
.navbar-right > li > .dropdown-menu:after,
|
34
|
+
.nav > li > .dropdown-menu.navbar-right:after
|
35
|
+
right: 13px
|
36
|
+
left: auto
|
37
|
+
|
38
|
+
a.navbar-brand, span.navbar-brand, a.navbar-brand:hover, span.navbar-brand:hover
|
39
|
+
&.rails-development
|
40
|
+
background-color: gold
|
41
|
+
color: blue
|
42
|
+
|
43
|
+
&.rails-quality_assurance
|
44
|
+
background-color: blue
|
45
|
+
color: gold
|
46
|
+
|
47
|
+
.sidebar-nav
|
48
|
+
.nav-stacked
|
49
|
+
li a
|
50
|
+
padding: 2px 0
|
51
|
+
color: $link-color
|
@@ -0,0 +1,43 @@
|
|
1
|
+
@font-face
|
2
|
+
font-family: 'open_sansbold'
|
3
|
+
src: image_path('open-sans/opensans_bold_macroman/OpenSans-Bold-webfont.eot')
|
4
|
+
src: image_path('open-sans/opensans_bold_macroman/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), image_path('open-sans/opensans_bold_macroman/OpenSans-Bold-webfont.woff') format('woff'), image_path('open-sans/opensans_bold_macroman/OpenSans-Bold-webfont.ttf') format('truetype'), image_path('open-sans/opensans_bold_macroman/OpenSans-Bold-webfont.svg#open_sansbold') format('svg')
|
5
|
+
font-weight: normal
|
6
|
+
font-style: normal
|
7
|
+
|
8
|
+
@font-face
|
9
|
+
font-family: 'open_sanslight'
|
10
|
+
src: image_path('open-sans/opensans_bold_macroman/OpenSans-Light-webfont.eot')
|
11
|
+
src: image_path('open-sans/opensans_bold_macroman/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), image_path('open-sans/opensans_bold_macroman/OpenSans-Light-webfont.woff') format('woff'), image_path('open-sans/opensans_bold_macroman/OpenSans-Light-webfont.ttf') format('truetype'), image_path('open-sans/opensans_bold_macroman/OpenSans-Light-webfont.svg#open_sanslight') format('svg')
|
12
|
+
font-weight: normal
|
13
|
+
font-style: normal
|
14
|
+
|
15
|
+
@font-face
|
16
|
+
font-family: 'open_sansregular'
|
17
|
+
src: image_path('open-sans/opensans_regular_macroman/OpenSans-Regular-webfont.eot')
|
18
|
+
src: image_path('open-sans/opensans_regular_macroman/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), image_path('open-sans/opensans_regular_macroman/OpenSans-Regular-webfont.woff') format('woff'), image_path('open-sans/opensans_regular_macroman/OpenSans-Regular-webfont.ttf') format('truetype'), url('open-sans/opensans_regular_macroman/OpenSans-Regular-webfont.svg#open_sansregular') format('svg')
|
19
|
+
font-weight: normal
|
20
|
+
font-style: normal
|
21
|
+
|
22
|
+
$bold-family: 'open_sansbold', helvetica, sans-serif
|
23
|
+
|
24
|
+
.bold
|
25
|
+
font-family: $bold-family
|
26
|
+
font-weight: 600
|
27
|
+
|
28
|
+
.thin
|
29
|
+
font-weight: 100
|
30
|
+
|
31
|
+
html body
|
32
|
+
h1, h2, h3, h4, h5, h6
|
33
|
+
color: $pri-blue
|
34
|
+
|
35
|
+
body, p, li
|
36
|
+
font-family: "open_sansregular", "helvetica", "arial", sans-serif !important
|
37
|
+
|
38
|
+
h1, h2, h3, h4, h5, h6, .thin
|
39
|
+
font-family: "open_sanslight", "helvetica", "arial", sans-serif !important
|
40
|
+
font-weight: 100 !important
|
41
|
+
|
42
|
+
strong
|
43
|
+
font-family: "open_sansbold", "helvetica", "arial", sans-serif
|
@@ -0,0 +1,26 @@
|
|
1
|
+
@import berkeley-colors
|
2
|
+
|
3
|
+
// $font-size-base: 13px
|
4
|
+
$body-bg: #F0F5F8
|
5
|
+
$brand-info: $bri-blue
|
6
|
+
$danger: #EE1F60
|
7
|
+
$brand-danger: $danger
|
8
|
+
$brand-primary: $pri-blue
|
9
|
+
|
10
|
+
$btn-primary-bg: $alt-blue
|
11
|
+
|
12
|
+
$font-family-sans-serif: "open_sansregular", "helvetica", "arial", sans-serif
|
13
|
+
$font-family-base: $font-family-sans-serif
|
14
|
+
|
15
|
+
$link-color: $vib-blue
|
16
|
+
|
17
|
+
$dropdown-link-hover-color: #fff
|
18
|
+
$dropdown-link-hover-bg: #08c
|
19
|
+
|
20
|
+
$navbar-height: 55px
|
21
|
+
$well-bg: transparent
|
22
|
+
$nav-link-hover-bg: $bri-blue
|
23
|
+
$headings-font-weight: 100
|
24
|
+
$font-size-h5: 15px
|
25
|
+
$font-size-h4: 18.25px
|
26
|
+
|
@@ -5,7 +5,7 @@ class UcbRails::Admin::UsersController < UcbRails::Admin::BaseController
|
|
5
5
|
def index
|
6
6
|
respond_to do |format|
|
7
7
|
format.html { @users = UcbRails::User.all }
|
8
|
-
format.json { render json: UcbRails::UsersDatatable.new(view_context) }
|
8
|
+
format.json { render json: UcbRails::UsersDatatable.new(view_context).as_json }
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -64,4 +64,4 @@ class UcbRails::Admin::UsersController < UcbRails::Admin::BaseController
|
|
64
64
|
@user ||= UcbRails::User.find(params.fetch(:id))
|
65
65
|
end
|
66
66
|
|
67
|
-
end
|
67
|
+
end
|
@@ -14,7 +14,7 @@ class UcbRails::BootstrapController < ApplicationController
|
|
14
14
|
UCB::LDAP::Person.find_by_uid(uid).tap do |e|
|
15
15
|
return render_text("Bad uid: #{uid.inspect}") if e.blank?
|
16
16
|
user = UcbRails::UserLdapService.create_user_from_uid(uid)
|
17
|
-
user.update_attributes(
|
17
|
+
user.update_attributes(admin: true)
|
18
18
|
redirect_to login_path
|
19
19
|
end
|
20
20
|
else
|
@@ -7,7 +7,7 @@ class UcbRails::UsersDatatable < UcbRails::BaseDatatable
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def column_names
|
10
|
-
@column_names ||= %w[admin inactive first_name last_name email phone last_request_at uid]
|
10
|
+
@column_names ||= %w[admin inactive first_name last_name email alternate_email phone last_request_at uid]
|
11
11
|
end
|
12
12
|
|
13
13
|
def search(search_term)
|
@@ -16,17 +16,18 @@ class UcbRails::UsersDatatable < UcbRails::BaseDatatable
|
|
16
16
|
|
17
17
|
def record_to_data(user)
|
18
18
|
[
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
user.admin? ? "Yes" : "No",
|
20
|
+
user.inactive? ? "Yes" : "No",
|
21
|
+
sanitize(user.first_name),
|
22
|
+
sanitize(user.last_name),
|
23
|
+
sanitize(user.email),
|
24
|
+
sanitize(user.alternate_email),
|
25
|
+
sanitize(user.phone),
|
26
|
+
user.last_request_at.to_s,
|
27
|
+
sanitize(user.uid),
|
27
28
|
link_to("Edit", edit_ucb_rails_admin_user_path(user), :id => dom_id(user)),
|
28
29
|
link_to('Delete', ucb_rails_admin_user_path(user), :method => :delete, :confirm => 'Are you sure?'),
|
29
30
|
]
|
30
31
|
end
|
31
32
|
|
32
|
-
end
|
33
|
+
end
|
@@ -42,7 +42,7 @@ module UcbRails
|
|
42
42
|
|
43
43
|
def process_default_url_options
|
44
44
|
if hash.has_key?('default_url_options')
|
45
|
-
ActionMailer::Base.default_url_options = hash.fetch('default_url_options')
|
45
|
+
ActionMailer::Base.default_url_options = hash.fetch('default_url_options').symbolize_keys
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -1,54 +1,61 @@
|
|
1
1
|
module UcbRails::LdapPerson
|
2
2
|
class Entry
|
3
|
-
|
3
|
+
|
4
4
|
# include ActiveAttr::Model <--- doesn't work with 4.0 (mass assign. security)
|
5
5
|
include ::ActiveAttr::Attributes
|
6
6
|
include ::ActiveAttr::BasicModel
|
7
7
|
include ::ActiveAttr::BlockInitialization
|
8
8
|
include ::ActiveAttr::MassAssignment
|
9
|
-
|
9
|
+
|
10
10
|
attribute :uid
|
11
11
|
attribute :calnet_id
|
12
|
+
attribute :employee_id
|
12
13
|
attribute :first_name
|
13
14
|
attribute :last_name
|
14
15
|
attribute :email
|
15
16
|
attribute :phone
|
16
17
|
attribute :departments
|
17
18
|
attribute :affiliations
|
18
|
-
|
19
|
+
attribute :affiliate_id
|
20
|
+
attribute :inactive
|
21
|
+
|
19
22
|
def full_name
|
20
23
|
"#{first_name()} #{last_name()}"
|
21
24
|
end
|
22
|
-
|
25
|
+
|
23
26
|
def last_first
|
24
27
|
"#{last_name}, #{first_name}"
|
25
28
|
end
|
26
|
-
|
29
|
+
|
27
30
|
def last_first_downcase
|
28
31
|
last_first.downcase
|
29
32
|
end
|
30
|
-
|
33
|
+
|
31
34
|
# Currently only used in rspec
|
32
35
|
def ==(other)
|
33
36
|
uid == other.uid
|
34
37
|
end
|
35
|
-
|
38
|
+
|
36
39
|
class << self
|
37
|
-
|
40
|
+
|
38
41
|
def new_from_ldap_entry(ldap_entry)
|
42
|
+
p ldap_entry.expired?
|
39
43
|
new(
|
40
44
|
:uid => ldap_entry.uid,
|
41
45
|
:calnet_id => ldap_entry.berkeleyedukerberosprincipalstring.first,
|
46
|
+
:employee_id => ldap_entry.employeenumber,
|
42
47
|
:first_name => ldap_entry.givenname.first,
|
43
48
|
:last_name => ldap_entry.sn.first,
|
44
49
|
:email => ldap_entry.mail.first,
|
45
|
-
:phone => ldap_entry.phone,
|
50
|
+
:phone => ldap_entry.phone,
|
46
51
|
:departments => ldap_entry.berkeleyeduunithrdeptname,
|
47
|
-
:affiliations => ldap_entry.berkeleyeduaffiliations
|
52
|
+
:affiliations => ldap_entry.berkeleyeduaffiliations,
|
53
|
+
:affiliate_id => ldap_entry.berkeleyeduaffid,
|
54
|
+
:inactive => ldap_entry.expired? || false
|
48
55
|
)
|
49
56
|
end
|
50
|
-
|
57
|
+
|
51
58
|
end
|
52
|
-
|
59
|
+
|
53
60
|
end
|
54
|
-
end
|
61
|
+
end
|