Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
645ebe3d
Commit
645ebe3d
authored
Apr 27, 2011
by
Jochen Wiedmann
Committed by
Max Kanat-Alexander
Apr 27, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 423612 - Allow editing extern_id for users from the admin interface
r=mkanat, a=mkanat
parent
6233375d
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
96 additions
and
1 deletion
+96
-1
Auth.pm
Bugzilla/Auth.pm
+10
-0
Login.pm
Bugzilla/Auth/Login.pm
+9
-0
Env.pm
Bugzilla/Auth/Login/Env.pm
+1
-0
Stack.pm
Bugzilla/Auth/Login/Stack.pm
+6
-0
Verify.pm
Bugzilla/Auth/Verify.pm
+9
-0
Stack.pm
Bugzilla/Auth/Verify/Stack.pm
+5
-0
Template.pm
Bugzilla/Template.pm
+1
-0
User.pm
Bugzilla/User.pm
+27
-0
editusers.cgi
editusers.cgi
+5
-1
userdata.html.tmpl
template/en/default/admin/users/userdata.html.tmpl
+13
-0
messages.html.tmpl
template/en/default/global/messages.html.tmpl
+2
-0
user-error.html.tmpl
template/en/default/global/user-error.html.tmpl
+8
-0
No files found.
Bugzilla/Auth.pm
View file @
645ebe3d
...
@@ -134,6 +134,12 @@ sub user_can_create_account {
...
@@ -134,6 +134,12 @@ sub user_can_create_account {
&&
$getter
->
user_can_create_account
;
&&
$getter
->
user_can_create_account
;
}
}
sub
extern_id_used
{
my
(
$self
)
=
@_
;
return
$self
->
{
_info_getter
}
->
extern_id_used
||
$self
->
{
_verifier
}
->
extern_id_used
;
}
sub
can_change_email
{
sub
can_change_email
{
return
$_
[
0
]
->
user_can_create_account
;
return
$_
[
0
]
->
user_can_create_account
;
}
}
...
@@ -397,6 +403,10 @@ Params: None
...
@@ -397,6 +403,10 @@ Params: None
Returns: C<true> if users are allowed to create new Bugzilla accounts,
Returns: C<true> if users are allowed to create new Bugzilla accounts,
C<false> otherwise.
C<false> otherwise.
=item C<extern_id_used>
Description: Whether or not current login system uses extern_id.
=item C<can_change_email>
=item C<can_change_email>
Description: Whether or not the current login system allows users to
Description: Whether or not the current login system allows users to
...
...
Bugzilla/Auth/Login.pm
View file @
645ebe3d
...
@@ -28,6 +28,7 @@ use constant requires_persistence => 1;
...
@@ -28,6 +28,7 @@ use constant requires_persistence => 1;
use
constant
requires_verification
=>
1
;
use
constant
requires_verification
=>
1
;
use
constant
user_can_create_account
=>
0
;
use
constant
user_can_create_account
=>
0
;
use
constant
is_automatic
=>
0
;
use
constant
is_automatic
=>
0
;
use
constant
extern_id_used
=>
0
;
sub
new
{
sub
new
{
my
(
$class
)
=
@_
;
my
(
$class
)
=
@_
;
...
@@ -131,4 +132,12 @@ just passes us an environment variable on most page requests, and does not
...
@@ -131,4 +132,12 @@ just passes us an environment variable on most page requests, and does not
ask the user for authentication information directly in Bugzilla.) Defaults
ask the user for authentication information directly in Bugzilla.) Defaults
to C<false>.
to C<false>.
=item C<extern_id_used>
Whether or not this login method uses the extern_id field. If
used, users with editusers permission will be be allowed to
edit the extern_id for all users.
The default value is C<0>.
=back
=back
Bugzilla/Auth/Login/Env.pm
View file @
645ebe3d
...
@@ -32,6 +32,7 @@ use constant can_login => 0;
...
@@ -32,6 +32,7 @@ use constant can_login => 0;
use
constant
requires_persistence
=>
0
;
use
constant
requires_persistence
=>
0
;
use
constant
requires_verification
=>
0
;
use
constant
requires_verification
=>
0
;
use
constant
is_automatic
=>
1
;
use
constant
is_automatic
=>
1
;
use
constant
extern_id_used
=>
1
;
sub
get_login_info
{
sub
get_login_info
{
my
(
$self
)
=
@_
;
my
(
$self
)
=
@_
;
...
...
Bugzilla/Auth/Login/Stack.pm
View file @
645ebe3d
...
@@ -28,6 +28,7 @@ use fields qw(
...
@@ -28,6 +28,7 @@ use fields qw(
)
;
)
;
use
Hash::
Util
qw(lock_keys)
;
use
Hash::
Util
qw(lock_keys)
;
use
Bugzilla::
Hook
;
use
Bugzilla::
Hook
;
use
List::
MoreUtils
qw(any)
;
sub
new
{
sub
new
{
my
$class
=
shift
;
my
$class
=
shift
;
...
@@ -97,4 +98,9 @@ sub user_can_create_account {
...
@@ -97,4 +98,9 @@ sub user_can_create_account {
return
0
;
return
0
;
}
}
sub
extern_id_used
{
my
(
$self
)
=
@_
;
return
any
{
$_
->
extern_id_used
}
@
{
$self
->
{
_stack
}
};
}
1
;
1
;
Bugzilla/Auth/Verify.pm
View file @
645ebe3d
...
@@ -25,6 +25,7 @@ use Bugzilla::User;
...
@@ -25,6 +25,7 @@ use Bugzilla::User;
use
Bugzilla::
Util
;
use
Bugzilla::
Util
;
use
constant
user_can_create_account
=>
1
;
use
constant
user_can_create_account
=>
1
;
use
constant
extern_id_used
=>
0
;
sub
new
{
sub
new
{
my
(
$class
,
$login_type
)
=
@_
;
my
(
$class
,
$login_type
)
=
@_
;
...
@@ -232,4 +233,12 @@ C<false>.
...
@@ -232,4 +233,12 @@ C<false>.
Whether or not users can manually create accounts in this type of
Whether or not users can manually create accounts in this type of
account source. Defaults to C<true>.
account source. Defaults to C<true>.
=item C<extern_id_used>
Whether or not this verifier method uses the extern_id field. If
used, users with editusers permission will be be allowed to
edit the extern_id for all users.
The default value is C<false>.
=back
=back
Bugzilla/Auth/Verify/Stack.pm
View file @
645ebe3d
...
@@ -86,4 +86,9 @@ sub user_can_create_account {
...
@@ -86,4 +86,9 @@ sub user_can_create_account {
return
0
;
return
0
;
}
}
sub
extern_id_used
{
my
(
$self
)
=
@_
;
return
any
{
$_
->
extern_id_used
}
@
{
$self
->
{
_stack
}
};
}
1
;
1
;
Bugzilla/Template.pm
View file @
645ebe3d
...
@@ -955,6 +955,7 @@ sub create {
...
@@ -955,6 +955,7 @@ sub create {
}
}
return
\
@optional
;
return
\
@optional
;
},
},
'default_authorizer'
=>
new
Bugzilla::
Auth
(),
},
},
};
};
...
...
Bugzilla/User.pm
View file @
645ebe3d
...
@@ -97,6 +97,7 @@ use constant DB_COLUMNS => (
...
@@ -97,6 +97,7 @@ use constant DB_COLUMNS => (
'profiles.mybugslink AS showmybugslink'
,
'profiles.mybugslink AS showmybugslink'
,
'profiles.disabledtext'
,
'profiles.disabledtext'
,
'profiles.disable_mail'
,
'profiles.disable_mail'
,
'profiles.extern_id'
,
);
);
use
constant
NAME_FIELD
=>
'login_name'
;
use
constant
NAME_FIELD
=>
'login_name'
;
use
constant
ID_FIELD
=>
'userid'
;
use
constant
ID_FIELD
=>
'userid'
;
...
@@ -108,6 +109,7 @@ use constant VALIDATORS => {
...
@@ -108,6 +109,7 @@ use constant VALIDATORS => {
disabledtext
=>
\&
_check_disabledtext
,
disabledtext
=>
\&
_check_disabledtext
,
login_name
=>
\&
check_login_name_for_creation
,
login_name
=>
\&
check_login_name_for_creation
,
realname
=>
\&
_check_realname
,
realname
=>
\&
_check_realname
,
extern_id
=>
\&
_check_extern_id
,
};
};
sub
UPDATE_COLUMNS
{
sub
UPDATE_COLUMNS
{
...
@@ -117,6 +119,7 @@ sub UPDATE_COLUMNS {
...
@@ -117,6 +119,7 @@ sub UPDATE_COLUMNS {
disabledtext
disabledtext
login_name
login_name
realname
realname
extern_id
)
;
)
;
push
(
@cols
,
'cryptpassword'
)
if
exists
$self
->
{
cryptpassword
};
push
(
@cols
,
'cryptpassword'
)
if
exists
$self
->
{
cryptpassword
};
return
@cols
;
return
@cols
;
...
@@ -135,6 +138,12 @@ sub new {
...
@@ -135,6 +138,12 @@ sub new {
bless
(
$user
,
$class
);
bless
(
$user
,
$class
);
return
$user
unless
$param
;
return
$user
unless
$param
;
if
(
ref
(
$param
)
eq
'HASH'
)
{
if
(
defined
$param
->
{
extern_id
})
{
$param
=
{
condition
=>
'extern_id = ?'
,
values
=>
[
$param
->
{
extern_id
}]
};
$_
[
0
]
=
$param
;
}
}
return
$class
->
SUPER::
new
(
@_
);
return
$class
->
SUPER::
new
(
@_
);
}
}
...
@@ -180,6 +189,22 @@ sub update {
...
@@ -180,6 +189,22 @@ sub update {
sub
_check_disable_mail
{
return
$_
[
1
]
?
1
:
0
;
}
sub
_check_disable_mail
{
return
$_
[
1
]
?
1
:
0
;
}
sub
_check_disabledtext
{
return
trim
(
$_
[
1
])
||
''
;
}
sub
_check_disabledtext
{
return
trim
(
$_
[
1
])
||
''
;
}
# Check whether the extern_id is unique.
sub
_check_extern_id
{
my
(
$invocant
,
$extern_id
)
=
@_
;
$extern_id
=
trim
(
$extern_id
);
return
undef
unless
defined
(
$extern_id
)
&&
$extern_id
ne
""
;
if
(
!
ref
(
$invocant
)
||
$invocant
->
extern_id
ne
$extern_id
)
{
my
$existing_login
=
$invocant
->
new
({
extern_id
=>
$extern_id
});
if
(
$existing_login
)
{
ThrowUserError
(
'extern_id_exists'
,
{
extern_id
=>
$extern_id
,
existing_login_name
=>
$existing_login
->
login
});
}
}
return
$extern_id
;
}
# This is public since createaccount.cgi needs to use it before issuing
# This is public since createaccount.cgi needs to use it before issuing
# a token for account creation.
# a token for account creation.
sub
check_login_name_for_creation
{
sub
check_login_name_for_creation
{
...
@@ -219,6 +244,7 @@ sub _check_realname { return trim($_[1]) || ''; }
...
@@ -219,6 +244,7 @@ sub _check_realname { return trim($_[1]) || ''; }
sub
set_disabledtext
{
$_
[
0
]
->
set
(
'disabledtext'
,
$_
[
1
]);
}
sub
set_disabledtext
{
$_
[
0
]
->
set
(
'disabledtext'
,
$_
[
1
]);
}
sub
set_disable_mail
{
$_
[
0
]
->
set
(
'disable_mail'
,
$_
[
1
]);
}
sub
set_disable_mail
{
$_
[
0
]
->
set
(
'disable_mail'
,
$_
[
1
]);
}
sub
set_extern_id
{
$_
[
0
]
->
set
(
'extern_id'
,
$_
[
1
]);
}
sub
set_login
{
sub
set_login
{
my
(
$self
,
$login
)
=
@_
;
my
(
$self
,
$login
)
=
@_
;
...
@@ -243,6 +269,7 @@ sub set_password { $_[0]->set('cryptpassword', $_[1]); }
...
@@ -243,6 +269,7 @@ sub set_password { $_[0]->set('cryptpassword', $_[1]); }
# Accessors for user attributes
# Accessors for user attributes
sub
name
{
$_
[
0
]
->
{
realname
};
}
sub
name
{
$_
[
0
]
->
{
realname
};
}
sub
login
{
$_
[
0
]
->
{
login_name
};
}
sub
login
{
$_
[
0
]
->
{
login_name
};
}
sub
extern_id
{
$_
[
0
]
->
{
extern_id
};
}
sub
email
{
$_
[
0
]
->
login
.
Bugzilla
->
params
->
{
'emailsuffix'
};
}
sub
email
{
$_
[
0
]
->
login
.
Bugzilla
->
params
->
{
'emailsuffix'
};
}
sub
disabledtext
{
$_
[
0
]
->
{
'disabledtext'
};
}
sub
disabledtext
{
$_
[
0
]
->
{
'disabledtext'
};
}
sub
is_disabled
{
$_
[
0
]
->
disabledtext
?
1
:
0
;
}
sub
is_disabled
{
$_
[
0
]
->
disabledtext
?
1
:
0
;
}
...
...
editusers.cgi
View file @
645ebe3d
...
@@ -213,7 +213,9 @@ if ($action eq 'search') {
...
@@ -213,7 +213,9 @@ if ($action eq 'search') {
cryptpassword
=>
$password
,
cryptpassword
=>
$password
,
realname
=>
scalar
$cgi
->
param
(
'name'
),
realname
=>
scalar
$cgi
->
param
(
'name'
),
disabledtext
=>
scalar
$cgi
->
param
(
'disabledtext'
),
disabledtext
=>
scalar
$cgi
->
param
(
'disabledtext'
),
disable_mail
=>
scalar
$cgi
->
param
(
'disable_mail'
)});
disable_mail
=>
scalar
$cgi
->
param
(
'disable_mail'
),
extern_id
=>
scalar
$cgi
->
param
(
'extern_id'
),
});
userDataToVars
(
$new_user
->
id
);
userDataToVars
(
$new_user
->
id
);
...
@@ -256,6 +258,8 @@ if ($action eq 'search') {
...
@@ -256,6 +258,8 @@ if ($action eq 'search') {
if
$cgi
->
param
(
'password'
);
if
$cgi
->
param
(
'password'
);
$otherUser
->
set_disabledtext
(
$cgi
->
param
(
'disabledtext'
));
$otherUser
->
set_disabledtext
(
$cgi
->
param
(
'disabledtext'
));
$otherUser
->
set_disable_mail
(
$cgi
->
param
(
'disable_mail'
));
$otherUser
->
set_disable_mail
(
$cgi
->
param
(
'disable_mail'
));
$otherUser
->
set_extern_id
(
$cgi
->
param
(
'extern_id'
))
if
defined
(
$cgi
->
param
(
'extern_id'
));
$changes
=
$otherUser
->
update
();
$changes
=
$otherUser
->
update
();
}
}
...
...
template/en/default/admin/users/userdata.html.tmpl
View file @
645ebe3d
...
@@ -38,6 +38,19 @@
...
@@ -38,6 +38,19 @@
[% END %]
[% END %]
</td>
</td>
</tr>
</tr>
[% IF default_authorizer.extern_id_used %]
<tr>
<th><label for="extern_id">External Login ID:</label></th>
<td>
[% IF editusers %]
<input size="64" maxlength="64" name="extern_id"
id="extern_id" value="[% otheruser.extern_id FILTER html %]">
[% ELSE %]
[% otheruser.extern_id FILTER html %]
[% END %]
</td>
</tr>
[% END %]
<tr>
<tr>
<th><label for="name">Real name:</label></th>
<th><label for="name">Real name:</label></th>
<td>
<td>
...
...
template/en/default/global/messages.html.tmpl
View file @
645ebe3d
...
@@ -60,6 +60,8 @@
...
@@ -60,6 +60,8 @@
A new password has been set.
A new password has been set.
[% ELSIF field == 'disabledtext' %]
[% ELSIF field == 'disabledtext' %]
The disable text has been modified.
The disable text has been modified.
[% ELSIF field == 'extern_id' %]
The user's External Login ID has been modified.
[% ELSIF field == 'disable_mail' %]
[% ELSIF field == 'disable_mail' %]
[% IF otheruser.email_disabled %]
[% IF otheruser.email_disabled %]
[% terms.Bug %]mail has been disabled.
[% terms.Bug %]mail has been disabled.
...
...
template/en/default/global/user-error.html.tmpl
View file @
645ebe3d
...
@@ -1696,6 +1696,14 @@
...
@@ -1696,6 +1696,14 @@
[% title = "Illegal User ID" %]
[% title = "Illegal User ID" %]
User ID '[% userid FILTER html %]' is not valid integer.
User ID '[% userid FILTER html %]' is not valid integer.
[% ELSIF error == "extern_id_exists" %]
[% title = "Account Already Exists" %]
There is already an account
[% IF existing_login_name %]
([% existing_login_name FILTER html %])
[% END %]
with the External Login ID "[% extern_id FILTER html %]".
[% ELSE %]
[% ELSE %]
[%# Try to find hooked error messages %]
[%# Try to find hooked error messages %]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment