Skip to content

Commit 697b8c9

Browse files
committed
Add MFA status to all token responses
- Add MFA field to ExternalToken base class with UNKNOWN default - Remove duplicate MFA handling from APIToken (now inherited) - Ensures all token endpoints return MFA status for UI compatibility - Non-ORCID providers default to MFA status UNKNOWN
1 parent c46b2da commit 697b8c9

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

src/main/java/us/kbase/auth2/service/api/APIToken.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,28 @@
11
package us.kbase.auth2.service.api;
22

33
import us.kbase.auth2.lib.token.StoredToken;
4-
import us.kbase.auth2.lib.identity.MfaStatus;
54
import us.kbase.auth2.service.common.ExternalToken;
65

76
public class APIToken extends ExternalToken {
87

98
//TODO JAVADOC or swagger
109

1110
private final long cachefor;
12-
private final MfaStatus mfa;
1311

1412
public APIToken(final StoredToken token, final long tokenCacheTimeMillis) {
1513
super(token);
1614
cachefor = tokenCacheTimeMillis;
17-
mfa = token.getMfa();
1815
}
1916

2017
public long getCachefor() {
2118
return cachefor;
2219
}
23-
24-
/**
25-
* Gets the MFA authentication status for this token.
26-
*
27-
* @return the MFA authentication status.
28-
*/
29-
public MfaStatus getMfa() {
30-
return mfa;
31-
}
3220

3321
@Override
3422
public int hashCode() {
3523
final int prime = 31;
3624
int result = super.hashCode();
3725
result = prime * result + (int) (cachefor ^ (cachefor >>> 32));
38-
result = prime * result + ((mfa == null) ? 0 : mfa.name().hashCode());
3926
return result;
4027
}
4128

@@ -51,13 +38,6 @@ public boolean equals(Object obj) {
5138
if (cachefor != other.cachefor) {
5239
return false;
5340
}
54-
if (mfa == null) {
55-
if (other.mfa != null) {
56-
return false;
57-
}
58-
} else if (!mfa.equals(other.mfa)) {
59-
return false;
60-
}
6141
return true;
6242
}
6343

src/main/java/us/kbase/auth2/service/common/ExternalToken.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import java.util.Map;
66

7+
import us.kbase.auth2.lib.identity.MfaStatus;
78
import us.kbase.auth2.lib.token.StoredToken;
89

910
public class ExternalToken {
@@ -17,6 +18,7 @@ public class ExternalToken {
1718
private final String name;
1819
private final String user;
1920
private final Map<String, String> custom;
21+
private final MfaStatus mfa;
2022

2123
public ExternalToken(final StoredToken storedToken) {
2224
requireNonNull(storedToken, "storedToken");
@@ -28,6 +30,8 @@ public ExternalToken(final StoredToken storedToken) {
2830
expires = storedToken.getExpirationDate().toEpochMilli();
2931
created = storedToken.getCreationDate().toEpochMilli();
3032
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;
3135
}
3236

3337
public String getType() {
@@ -58,6 +62,16 @@ public Map<String, String> getCustom() {
5862
return custom;
5963
}
6064

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+
6175
@Override
6276
public int hashCode() {
6377
final int prime = 31;
@@ -66,6 +80,7 @@ public int hashCode() {
6680
result = prime * result + ((custom == null) ? 0 : custom.hashCode());
6781
result = prime * result + (int) (expires ^ (expires >>> 32));
6882
result = prime * result + ((id == null) ? 0 : id.hashCode());
83+
result = prime * result + ((mfa == null) ? 0 : mfa.name().hashCode());
6984
result = prime * result + ((name == null) ? 0 : name.hashCode());
7085
result = prime * result + ((type == null) ? 0 : type.hashCode());
7186
result = prime * result + ((user == null) ? 0 : user.hashCode());
@@ -125,6 +140,13 @@ public boolean equals(Object obj) {
125140
} else if (!user.equals(other.user)) {
126141
return false;
127142
}
143+
if (mfa == null) {
144+
if (other.mfa != null) {
145+
return false;
146+
}
147+
} else if (!mfa.equals(other.mfa)) {
148+
return false;
149+
}
128150
return true;
129151
}
130152
}

0 commit comments

Comments
 (0)