@@ -61,6 +61,7 @@ class GormUserService implements IUserService {
61
61
LocationService locationService
62
62
MessageSource messageSource
63
63
WebService webService
64
+ ProfileService profileService
64
65
65
66
@Value (' ${password.encoder}' )
66
67
String passwordEncoderType = ' bcrypt'
@@ -730,4 +731,76 @@ class GormUserService implements IUserService {
730
731
731
732
@Override
732
733
void enableMfa (String userId , boolean enable ){}
734
+ boolean removeUserRole (User user , Role role ) {
735
+ return false
736
+ }
737
+
738
+ @Override
739
+ User findByUserNameOrEmail (String userName ) {
740
+ return User . findByUserNameOrEmail(userName, userName)
741
+ }
742
+
743
+ @Override
744
+ def findUsersByRole (String roleName , List numberIds , List userIds , String pageOrToken ) {
745
+ ScrollableResults results = null
746
+ // stream the results just in case someone requests ROLE_USER or something
747
+ User . withStatelessSession { session ->
748
+ Role role = Role . findByRole(roleName)
749
+ if (! role) {
750
+ return [error : " Role not found" ]
751
+ }
752
+
753
+ def c = User . createCriteria()
754
+ results = c. scroll {
755
+ or {
756
+ if (numberIds) {
757
+ inList(' id' , numberIds* . toLong())
758
+ }
759
+ if (userIds) {
760
+ inList(' userName' , userIds)
761
+ inList(' email' , userIds)
762
+ }
763
+ }
764
+ userRoles {
765
+ eq(" role" , role)
766
+ }
767
+ } as ScrollableResults
768
+ }
769
+ return [results : results]
770
+ }
771
+
772
+ def getUserDetailsFromIdList (List idList ){
773
+ def c = User . createCriteria()
774
+ def results = c. list() {
775
+ ' in' (" id" , idList. collect { userId -> userId as long } )
776
+ }
777
+ return results
778
+ }
779
+
780
+ def searchByUsernameOrEmail (String q , int max ){
781
+
782
+ ScrollableResults results = null
783
+
784
+ User . withStatelessSession { session ->
785
+ def c = User . createCriteria()
786
+ results = c. scroll {
787
+ or {
788
+ ilike(' userName' , " %$q %" )
789
+ ilike(' email' , " %$q %" )
790
+ ilike(' displayName' , " %$q %" )
791
+ }
792
+ maxResults(max)
793
+ } as ScrollableResults
794
+ }
795
+ return [results : results]
796
+ }
797
+
798
+ def saveCustomUserProperty (User user , String name , String value ){
799
+ UserProperty property = profileService. saveUserProperty(user, name, value)
800
+ return property. hasErrors() ? null : property
801
+ }
802
+
803
+ def getCustomUserProperty (User user , String name ){
804
+ return profileService. getUserProperty(user, name);
805
+ }
733
806
}
0 commit comments