Changeset 2256
- Timestamp:
- 06/03/19 19:53:20 (5 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Model/AttrForms.pm
r2201 r2256 162 162 autoMemberFilter 163 163 autoFromSutype 164 autoInclude 165 autoExclude 164 166 sutype 165 167 services … … 240 242 autoMemberFilter 241 243 autoFromSutype 244 autoInclude 242 245 autoExclude 246 autoAddEmail 243 247 create 244 248 createdby -
trunk/LATMOS-Accounts/bin/la-sql-upgrade
r2243 r2256 50 50 51 51 my $LA = LATMOS::Accounts->new($config, noacl => 1); 52 53 $base ||= $LA->default_base_name; 54 52 55 my $labase = $LA->_load_base($base); 53 56 $labase->unexported(1); -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql.pm
r2244 r2256 18 18 our $VERSION = (q$Rev$ =~ /^Rev: (\d+) /)[0]; 19 19 20 sub SCHEMA_VERSION { 3 2};20 sub SCHEMA_VERSION { 33 }; 21 21 22 22 =head1 NAME -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Aliases.pm
r1904 r2256 188 188 label => l('User excluded'), 189 189 }, 190 autoInclude => { 191 multiple => 1, 192 reference => 'user', 193 label => l('User included'), 194 }, 195 autoAddEmail => { 196 multiple => 1, 197 label => l('Extra email'), 198 }, 190 199 } 191 200 ) … … 269 278 270 279 my %email = $self->base->attributes_summary_by_object('user', 'mail'); 271 my %users; 272 273 my $autoex = $self->get_field('autoExclude'); 274 my %exclude = map { $_ => 1 } grep { $_ } (ref $autoex ? @$autoex : $autoex); 275 276 if (my $filter = $self->get_field('autoMemberFilter')) { 277 $users{$_} = 1 foreach( $self->base->search_objects( 278 'user', 279 'oalias=NULL', 280 ref $filter ? @{ $filter } : $filter) 281 ); 282 } 283 284 if (my $filter = $self->get_field('autoFromSutype')) { 285 my @suTypeFilter = map { "sutype=$_" } (ref $filter ? @{ $filter } : $filter); 286 foreach my $group ($self->base->search_objects('group', @suTypeFilter)) { 287 foreach ($self->base->search_objects('user', 'oalias=NULL', "memberOf=$group")) { 288 $users{$_} = 1; 289 } 290 } 291 } 280 281 my @UserList = $self->_filterToUser(); 292 282 293 283 my %forward = (); 294 284 295 foreach my $user (keys %users) { 296 $exclude{$user} and next; 285 foreach my $user (@UserList) { 297 286 $email{$user} or next; 298 287 my $mail = $email{$user}->[0] or next; 299 $forward{$mail} = 1; 288 $forward{ lc($mail) } = 1; 289 } 290 291 my $autoAddEmail = $self->get_field('autoAddEmail'); 292 293 foreach my $mail (grep { $_ } (ref $autoAddEmail ? @$autoAddEmail : $autoAddEmail)) { 294 $forward{ lc($mail) } = 1; 300 295 } 301 296 -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Group.pm
r2175 r2256 151 151 }, 152 152 label => l('Automatics filters'), 153 }, 154 autoExclude => { 155 multiple => 1, 156 reference => 'user', 157 label => l('User excluded'), 158 }, 159 autoInclude => { 160 multiple => 1, 161 reference => 'user', 162 label => l('User included'), 153 163 }, 154 164 autoFromSutype => { … … 243 253 ); 244 254 245 my %users; 246 247 if (my $filter = $self->get_field('autoFromSutype')) { 248 my @suTypeFilter = map { "sutype=$_" } (ref $filter ? @{ $filter } : $filter); 249 foreach my $group ($self->base->search_objects('group', @suTypeFilter)) { 250 foreach ($self->base->search_objects('user', "memberOf=$group")) { 251 $users{$_} = 1; 252 } 253 } 254 } 255 256 if (my $filter = $self->get_field('autoMemberFilter')) { 257 foreach ($self->base->search_objects( 258 'user', 259 'oalias=NULL', 260 ref $filter ? @{ $filter } : $filter)) { 261 $users{$_} = 1; 262 } 263 } 264 265 my $res = $self->_set_group_members([ keys %users ]); 255 my @Userlist = $self->_filterToUser; 256 257 my $res = $self->_set_group_members( \@Userlist ); 266 258 267 259 $res; -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/objects.pm
r2236 r2256 897 897 } 898 898 899 sub _filterToUser { 900 my ($self) = @_; 901 902 if ( 903 !$self->get_field('autoMemberFilter') 904 && !$self->get_field('autoFromSutype')) { 905 return 0; 906 } 907 $self->base->log(LA_DEBUG, 908 "Populating group %s from autoMemberFilter/autoFromSutype attribute", 909 $self->id 910 ); 911 912 my $autoin = $self->get_field('autoInclude'); 913 my %include = map { $_ => 1 } grep { $_ } (ref $autoin ? @$autoin : $autoin); 914 915 my $autoex = $self->get_field('autoExclude'); 916 my %exclude = map { $_ => 1 } grep { $_ } (ref $autoex ? @$autoex : $autoex); 917 918 my %users = %include; 919 920 if (my $filter = $self->get_field('autoFromSutype')) { 921 my @suTypeFilter = map { "sutype=$_" } (ref $filter ? @{ $filter } : $filter); 922 foreach my $group ($self->base->search_objects('group', @suTypeFilter)) { 923 foreach ($self->base->search_objects('user', "memberOf=$group")) { 924 $users{$_} = 1; 925 } 926 } 927 } 928 929 if (my $filter = $self->get_field('autoMemberFilter')) { 930 foreach ($self->base->search_objects( 931 'user', 932 'oalias=NULL', 933 ref $filter ? @{ $filter } : $filter)) { 934 $users{$_} = 1; 935 } 936 } 937 938 my @Userlist = grep { ! $exclude{ $_ } } keys %users; 939 940 @Userlist 941 } 942 943 899 944 =head2 attributes_summary_by_object($base, $attribute) 900 945 -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/upgrade.pm
r2249 r2256 1199 1199 ver => 32, 1200 1200 recompute => 1, 1201 } 1201 }, 1202 { 1203 ver => 33, 1204 sql => [ 1205 q{ 1206 CREATE OR REPLACE FUNCTION public.group_sort_fields() RETURNS trigger AS 1207 $BODY$BEGIN 1208 1209 IF (TG_OP='INSERT') then 1210 IF (new.attr='managedBy' 1211 OR new.attr='managedAlsoBy' 1212 OR new.attr='member' 1213 OR new.attr='memberUID' 1214 OR new.attr='autoExclude' 1215 OR new.attr='autoInclude') THEN 1216 insert into group_attributes_users VALUES (new.*); 1217 RETURN NULL; 1218 END IF; 1219 1220 IF (new.attr='sutype') THEN 1221 insert into group_attributes_sutypes VALUES (new.*); 1222 RETURN NULL; 1223 END IF; 1224 end if; 1225 1226 1227 IF (TG_OP = 'UPDATE') THEN 1228 IF (new.attr='gidNumber') then 1229 update "group" set gidnumber = new.value::integer where 1230 "group".ikey = new.okey; 1231 RETURN NULL; 1232 END IF; 1233 END IF; 1234 1235 IF (TG_OP = 'DELETE') THEN 1236 IF (old.attr='exported') then 1237 update "group" set exported = false where "group".ikey = old.okey; 1238 return null; 1239 end if; 1240 else 1241 IF (new.attr='exported') then 1242 update "group" set exported = true where "group".ikey = new.okey; 1243 RETURN NULL; 1244 end if; 1245 END IF; 1246 1247 if (TG_OP='DELETE') THEN 1248 RETURN old; 1249 else 1250 RETURN new; 1251 end if; 1252 END;$BODY$ 1253 LANGUAGE plpgsql VOLATILE NOT LEAKPROOF 1254 COST 100; 1255 } 1256 ], 1257 }, 1202 1258 ); 1203 1259
Note: See TracChangeset
for help on using the changeset viewer.