@@ -30,65 +30,50 @@ public static class UserLoginInfoViewModelBuilder
3030 public static IEnumerable < UserLoginInfoViewModel > GetSocialLogins ( this User user )
3131 {
3232 var canRemoveLogins = user . PasswordHash != null || user . ExternalLogins . Count > 1 ;
33- if ( user . ExternalLogins . SingleOrDefault ( l => l . Provider == "Google" ) is UserExternalLogin googleLogin )
33+ yield return GetModel ( UserLoginInfoViewModel . ProviderDescViewModel . Google ) ;
34+ var vk = GetModel ( UserLoginInfoViewModel . ProviderDescViewModel . Vk ) ;
35+ if ( vk . ProviderKey is not null )
3436 {
35- yield return new UserLoginInfoViewModel ( )
36- {
37- AllowLink = false ,
38- AllowUnlink = canRemoveLogins ,
39- LoginProvider = UserLoginInfoViewModel . ProviderDescViewModel . Google ,
40- ProviderKey = googleLogin . Key ,
41- NeedToReLink = false ,
42- ProviderLink = null ,
43- } ;
37+ vk . ProviderLink = $ "https://vk.com/id{ vk . ProviderKey } ";
4438 }
45- else
46- {
47- yield return new UserLoginInfoViewModel ( )
48- {
49- AllowLink = true ,
50- AllowUnlink = false ,
51- LoginProvider = UserLoginInfoViewModel . ProviderDescViewModel . Google ,
52- ProviderKey = null ,
53- NeedToReLink = false ,
54- ProviderLink = null ,
55- } ;
56- }
57- if ( user . ExternalLogins . SingleOrDefault ( l => l . Provider == "Vkontakte" ) is UserExternalLogin vkLogin )
39+
40+ if ( vk . ProviderKey is null && user . Extra ? . Vk is not null )
5841 {
59- yield return new UserLoginInfoViewModel ( )
60- {
61- AllowLink = false ,
62- AllowUnlink = canRemoveLogins ,
63- LoginProvider = UserLoginInfoViewModel . ProviderDescViewModel . Vk ,
64- ProviderKey = vkLogin . Key ,
65- NeedToReLink = false ,
66- ProviderLink = $ "https://vk.com/id{ vkLogin . Key } ",
67- } ;
42+ vk . NeedToReLink = true ;
43+ vk . AllowLink = false ;
44+ vk . ProviderLink = $ "https://vk.com/id{ user . Extra ? . Vk } ";
6845 }
69- else if ( user . Extra ? . Vk != null )
46+
47+ yield return vk ;
48+
49+ UserLoginInfoViewModel GetModel ( UserLoginInfoViewModel . ProviderDescViewModel provider )
7050 {
71- yield return new UserLoginInfoViewModel ( )
51+ if ( user . ExternalLogins . SingleOrDefault ( l =>
52+ l . Provider . ToLowerInvariant ( ) == provider . ProviderId . ToLowerInvariant ( )
53+ ) is UserExternalLogin login )
7254 {
73- AllowLink = false ,
74- AllowUnlink = false ,
75- LoginProvider = UserLoginInfoViewModel . ProviderDescViewModel . Vk ,
76- ProviderKey = null ,
77- NeedToReLink = true ,
78- ProviderLink = $ "https://vk.com/id { user . Extra ? . Vk } " ,
79- } ;
80- }
81- else
82- {
83- yield return new UserLoginInfoViewModel ( )
55+ return new UserLoginInfoViewModel ( )
56+ {
57+ AllowLink = false ,
58+ AllowUnlink = canRemoveLogins ,
59+ LoginProvider = provider ,
60+ ProviderKey = login . Key ,
61+ NeedToReLink = false ,
62+ ProviderLink = null ,
63+ } ;
64+ }
65+ else
8466 {
85- AllowLink = true ,
86- AllowUnlink = false ,
87- LoginProvider = UserLoginInfoViewModel . ProviderDescViewModel . Vk ,
88- ProviderKey = null ,
89- NeedToReLink = false ,
90- ProviderLink = null ,
91- } ;
67+ return new UserLoginInfoViewModel ( )
68+ {
69+ AllowLink = true ,
70+ AllowUnlink = false ,
71+ LoginProvider = provider ,
72+ ProviderKey = null ,
73+ NeedToReLink = false ,
74+ ProviderLink = null ,
75+ } ;
76+ }
9277 }
9378 }
9479 }
0 commit comments