4
4
5
5
import java .util .Map ;
6
6
7
+ import us .kbase .auth2 .lib .identity .MfaStatus ;
7
8
import us .kbase .auth2 .lib .token .StoredToken ;
8
9
9
10
public class ExternalToken {
@@ -17,6 +18,7 @@ public class ExternalToken {
17
18
private final String name ;
18
19
private final String user ;
19
20
private final Map <String , String > custom ;
21
+ private final MfaStatus mfa ;
20
22
21
23
public ExternalToken (final StoredToken storedToken ) {
22
24
requireNonNull (storedToken , "storedToken" );
@@ -28,6 +30,8 @@ public ExternalToken(final StoredToken storedToken) {
28
30
expires = storedToken .getExpirationDate ().toEpochMilli ();
29
31
created = storedToken .getCreationDate ().toEpochMilli ();
30
32
custom = storedToken .getContext ().getCustomContext ();
33
+ // For tokens from non-ORCID providers, MFA status defaults to UNKNOWN
34
+ mfa = storedToken .getMfa () != null ? storedToken .getMfa () : MfaStatus .UNKNOWN ;
31
35
}
32
36
33
37
public String getType () {
@@ -58,6 +62,16 @@ public Map<String, String> getCustom() {
58
62
return custom ;
59
63
}
60
64
65
+ /**
66
+ * Gets the MFA authentication status for this token.
67
+ * Returns UNKNOWN for tokens from identity providers that don't support MFA.
68
+ *
69
+ * @return the MFA authentication status.
70
+ */
71
+ public MfaStatus getMfa () {
72
+ return mfa ;
73
+ }
74
+
61
75
@ Override
62
76
public int hashCode () {
63
77
final int prime = 31 ;
@@ -66,6 +80,7 @@ public int hashCode() {
66
80
result = prime * result + ((custom == null ) ? 0 : custom .hashCode ());
67
81
result = prime * result + (int ) (expires ^ (expires >>> 32 ));
68
82
result = prime * result + ((id == null ) ? 0 : id .hashCode ());
83
+ result = prime * result + ((mfa == null ) ? 0 : mfa .name ().hashCode ());
69
84
result = prime * result + ((name == null ) ? 0 : name .hashCode ());
70
85
result = prime * result + ((type == null ) ? 0 : type .hashCode ());
71
86
result = prime * result + ((user == null ) ? 0 : user .hashCode ());
@@ -125,6 +140,13 @@ public boolean equals(Object obj) {
125
140
} else if (!user .equals (other .user )) {
126
141
return false ;
127
142
}
143
+ if (mfa == null ) {
144
+ if (other .mfa != null ) {
145
+ return false ;
146
+ }
147
+ } else if (!mfa .equals (other .mfa )) {
148
+ return false ;
149
+ }
128
150
return true ;
129
151
}
130
152
}
0 commit comments