diff options
| author | alpaylan | 2021-04-14 16:36:42 +0300 |
|---|---|---|
| committer | alpaylan | 2021-04-14 16:36:42 +0300 |
| commit | 85b29df4208b83c1949032db56c8d76e8c76b705 (patch) | |
| tree | 5c44f069e0e5de7044e0ac26c4c2a4fffceec6ec | |
| parent | 3bb302ccef77af5650a088c7030563ba84d1552c (diff) | |
| download | gradecoin-85b29df4208b83c1949032db56c8d76e8c76b705.tar.gz gradecoin-85b29df4208b83c1949032db56c8d76e8c76b705.tar.bz2 gradecoin-85b29df4208b83c1949032db56c8d76e8c76b705.zip | |
embed user passwds to the code structs.
| -rw-r--r-- | src/handlers.rs | 2 | ||||
| -rw-r--r-- | src/schema.rs | 41 | ||||
| -rw-r--r-- | tests/route_tests.rs | 4 | ||||
| -rw-r--r-- | tests/schema_tests.rs | 28 |
4 files changed, 55 insertions, 20 deletions
diff --git a/src/handlers.rs b/src/handlers.rs index e34abbe..b9df931 100644 --- a/src/handlers.rs +++ b/src/handlers.rs | |||
| @@ -39,7 +39,7 @@ pub async fn authenticate_user( | |||
| 39 | debug!("POST request to /register, authenticate_user"); | 39 | debug!("POST request to /register, authenticate_user"); |
| 40 | let provided_id = request.student_id.clone(); | 40 | let provided_id = request.student_id.clone(); |
| 41 | 41 | ||
| 42 | let priv_student_id = match MetuId::new(request.student_id) { | 42 | let priv_student_id = match MetuId::new(request.student_id, request.passwd) { |
| 43 | Some(id) => id, | 43 | Some(id) => id, |
| 44 | None => { | 44 | None => { |
| 45 | let res_json = warp::reply::json(&GradeCoinResponse { | 45 | let res_json = warp::reply::json(&GradeCoinResponse { |
diff --git a/src/schema.rs b/src/schema.rs index 55e46c0..65150c1 100644 --- a/src/schema.rs +++ b/src/schema.rs | |||
| @@ -132,22 +132,47 @@ pub struct User { | |||
| 132 | #[derive(Serialize, Deserialize, Debug, PartialEq)] | 132 | #[derive(Serialize, Deserialize, Debug, PartialEq)] |
| 133 | pub struct MetuId { | 133 | pub struct MetuId { |
| 134 | id: String, | 134 | id: String, |
| 135 | passwd: String, | ||
| 135 | } | 136 | } |
| 136 | 137 | ||
| 137 | // TODO: this will arrive encrypted <13-04-21, yigit> // | 138 | // TODO: this will arrive encrypted <13-04-21, yigit> // |
| 138 | #[derive(Serialize, Deserialize, Debug, PartialEq)] | 139 | #[derive(Serialize, Deserialize, Debug, PartialEq)] |
| 139 | pub struct AuthRequest { | 140 | pub struct AuthRequest { |
| 140 | pub student_id: String, | 141 | pub student_id: String, |
| 142 | pub passwd: String, | ||
| 141 | pub public_key: String, | 143 | pub public_key: String, |
| 142 | } | 144 | } |
| 143 | 145 | ||
| 144 | lazy_static! { | 146 | lazy_static! { |
| 145 | static ref OUR_STUDENTS: HashSet<&'static str> = { | 147 | static ref OUR_STUDENTS: HashSet<(&'static str, &'static str)> = { |
| 146 | [ | 148 | [ |
| 147 | "e254275", "e223687", "e211024", "e209888", "e223725", "e209362", "e209898", "e230995", | 149 | ("e254275", "DtNX1qk4YF4saRH"), |
| 148 | "e223743", "e223747", "e223749", "e223751", "e188126", "e209913", "e203608", "e233013", | 150 | ("e223687", "cvFEs4XLjuGBD1v"), |
| 149 | "e216982", "e217185", "e223780", "e194931", "e223783", "e254550", "e217203", "e217477", | 151 | ("e211024", "voQAcxiKJmEXYRT"), |
| 150 | "e223786", "e231060", "e223795", | 152 | ("e209888", "O75dli6AQtz2tUi"), |
| 153 | ("e223725", "xXuTD3Y4tyrv2Jz"), | ||
| 154 | ("e209362", "N7wGm5XU5zVWOWu"), | ||
| 155 | ("e209898", "aKBFfB8fZMq8pVn"), | ||
| 156 | ("e230995", "TgcHGlqeFhQGx42"), | ||
| 157 | ("e223743", "YVWVSWuIHplJk9C"), | ||
| 158 | ("e223747", "8LAeHrsjnwXh59Q"), | ||
| 159 | ("e223749", "HMFeJqVOzwCPHbc"), | ||
| 160 | ("e223751", "NjMsxmtmy2VOwMW"), | ||
| 161 | ("e188126", "QibuPdV2gXfsVJW"), | ||
| 162 | ("e209913", "kMxJvl2vHSWCy4A"), | ||
| 163 | ("e203608", "mfkkR0MWurk6Rp1"), | ||
| 164 | ("e233013", "GCqHxdOaDj2pWXx"), | ||
| 165 | ("e216982", "2Z0xmgCStnj5qg5"), | ||
| 166 | ("e217185", "BcaZNlzlhPph7A3"), | ||
| 167 | ("e223780", "2KvVxKUQaA9H4sn"), | ||
| 168 | ("e194931", "hsC0Wb8PQ5vzwdQ"), | ||
| 169 | ("e223783", "ETUJA3kt1QYvJai"), | ||
| 170 | ("e254550", "rPRjX0A4NefvKWi"), | ||
| 171 | ("e217203", "lN3IWhGyCrGfkk5"), | ||
| 172 | ("e217477", "O9xlMaa7LanC82w"), | ||
| 173 | ("e223786", "UxI6czykJfp9T9N"), | ||
| 174 | ("e231060", "VJgziofQQPCoisH"), | ||
| 175 | ("e223795", "pmcTCKox99NFsqp"), | ||
| 151 | ] | 176 | ] |
| 152 | .iter() | 177 | .iter() |
| 153 | .cloned() | 178 | .cloned() |
| @@ -162,9 +187,9 @@ impl fmt::Display for MetuId { | |||
| 162 | } | 187 | } |
| 163 | 188 | ||
| 164 | impl MetuId { | 189 | impl MetuId { |
| 165 | pub fn new(id: String) -> Option<Self> { | 190 | pub fn new(id: String, pwd: String) -> Option<Self> { |
| 166 | if OUR_STUDENTS.contains(&*id) { | 191 | if OUR_STUDENTS.contains(&(&*id, &*pwd)) { |
| 167 | Some(MetuId { id: id }) | 192 | Some(MetuId { id: id, passwd: pwd }) |
| 168 | } else { | 193 | } else { |
| 169 | None | 194 | None |
| 170 | } | 195 | } |
diff --git a/tests/route_tests.rs b/tests/route_tests.rs index 7c0651f..5c2d891 100644 --- a/tests/route_tests.rs +++ b/tests/route_tests.rs | |||
| @@ -12,7 +12,7 @@ mod tests { | |||
| 12 | db.users.write().insert( | 12 | db.users.write().insert( |
| 13 | "mock_transaction_source".to_owned(), | 13 | "mock_transaction_source".to_owned(), |
| 14 | User { | 14 | User { |
| 15 | user_id: MetuId::new("e254275".to_owned()).unwrap(), | 15 | user_id: MetuId::new("e254275".to_owned(), "DtNX1qk4YF4saRH".to_owned()).unwrap(), |
| 16 | public_key: "-----BEGIN PUBLIC KEY----- | 16 | public_key: "-----BEGIN PUBLIC KEY----- |
| 17 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4nU0G4WjkmcQUx0hq6LQ | 17 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4nU0G4WjkmcQUx0hq6LQ |
| 18 | uV5Q+ACmUFL/OjoYMDwC/O/6pCd1UZgCfgHN2xEffDPznzcTn8OiFRxr4oWyBiny | 18 | uV5Q+ACmUFL/OjoYMDwC/O/6pCd1UZgCfgHN2xEffDPznzcTn8OiFRxr4oWyBiny |
| @@ -56,6 +56,7 @@ sQIDAQAB | |||
| 56 | fn priviliged_mocked_user() -> AuthRequest { | 56 | fn priviliged_mocked_user() -> AuthRequest { |
| 57 | AuthRequest { | 57 | AuthRequest { |
| 58 | student_id: String::from("e254275"), | 58 | student_id: String::from("e254275"), |
| 59 | passwd: String::from("DtNX1qk4YF4saRH"), | ||
| 59 | public_key: "NOT IMPLEMENTED".to_owned(), | 60 | public_key: "NOT IMPLEMENTED".to_owned(), |
| 60 | } | 61 | } |
| 61 | } | 62 | } |
| @@ -64,6 +65,7 @@ sQIDAQAB | |||
| 64 | fn unpriviliged_mocked_user() -> AuthRequest { | 65 | fn unpriviliged_mocked_user() -> AuthRequest { |
| 65 | AuthRequest { | 66 | AuthRequest { |
| 66 | student_id: String::from("foobarbaz"), | 67 | student_id: String::from("foobarbaz"), |
| 68 | passwd: String::from("DtNX1qk4YF4saRH"), | ||
| 67 | public_key: "NOT IMPLEMENTED".to_owned(), | 69 | public_key: "NOT IMPLEMENTED".to_owned(), |
| 68 | } | 70 | } |
| 69 | } | 71 | } |
diff --git a/tests/schema_tests.rs b/tests/schema_tests.rs index c1880b9..4240a5f 100644 --- a/tests/schema_tests.rs +++ b/tests/schema_tests.rs | |||
| @@ -192,7 +192,7 @@ mod tests { | |||
| 192 | #[test] | 192 | #[test] |
| 193 | fn user_serialize_correctly() { | 193 | fn user_serialize_correctly() { |
| 194 | let user = User { | 194 | let user = User { |
| 195 | user_id: MetuId::new("e254275".to_owned()).unwrap(), | 195 | user_id: MetuId::new("e254275".to_owned(), "DtNX1qk4YF4saRH".to_owned()).unwrap(), |
| 196 | public_key: "public_key".to_owned(), | 196 | public_key: "public_key".to_owned(), |
| 197 | balance: 0 | 197 | balance: 0 |
| 198 | }; | 198 | }; |
| @@ -202,9 +202,11 @@ mod tests { | |||
| 202 | &[ | 202 | &[ |
| 203 | Token::Struct{name: "User", len: 3}, | 203 | Token::Struct{name: "User", len: 3}, |
| 204 | Token::String("user_id"), | 204 | Token::String("user_id"), |
| 205 | Token::Struct {name: "MetuId", len: 1}, | 205 | Token::Struct {name: "MetuId", len: 2}, |
| 206 | Token::String("id"), | 206 | Token::String("id"), |
| 207 | Token::String("e254275"), | 207 | Token::String("e254275"), |
| 208 | Token::String("passwd"), | ||
| 209 | Token::String("DtNX1qk4YF4saRH"), | ||
| 208 | Token::StructEnd, | 210 | Token::StructEnd, |
| 209 | Token::String("public_key"), | 211 | Token::String("public_key"), |
| 210 | Token::String("public_key"), | 212 | Token::String("public_key"), |
| @@ -218,11 +220,11 @@ mod tests { | |||
| 218 | #[test] | 220 | #[test] |
| 219 | fn user_deserialize_correctly() { | 221 | fn user_deserialize_correctly() { |
| 220 | let expected_user = User { | 222 | let expected_user = User { |
| 221 | user_id: MetuId::new("e254275".to_owned()).unwrap(), | 223 | user_id: MetuId::new("e254275".to_owned(), "DtNX1qk4YF4saRH".to_owned()).unwrap(), |
| 222 | public_key: "public_key".to_owned(), | 224 | public_key: "public_key".to_owned(), |
| 223 | balance: 0 | 225 | balance: 0 |
| 224 | }; | 226 | }; |
| 225 | let data = r#"{"user_id":{"id":"e254275"},"public_key":"public_key","balance":0}"#; | 227 | let data = r#"{"user_id":{"id":"e254275","passwd":"DtNX1qk4YF4saRH"},"public_key":"public_key","balance":0}"#; |
| 226 | let user: User = serde_json::from_str(data).unwrap(); | 228 | let user: User = serde_json::from_str(data).unwrap(); |
| 227 | 229 | ||
| 228 | assert_eq!(user, expected_user); | 230 | assert_eq!(user, expected_user); |
| @@ -231,14 +233,16 @@ mod tests { | |||
| 231 | 233 | ||
| 232 | #[test] | 234 | #[test] |
| 233 | fn metu_id_serialize_correctly() { | 235 | fn metu_id_serialize_correctly() { |
| 234 | let metu_id = MetuId::new ("e254275".to_owned()).unwrap(); | 236 | let metu_id = MetuId::new ("e254275".to_owned(), "DtNX1qk4YF4saRH".to_owned()).unwrap(); |
| 235 | 237 | ||
| 236 | assert_tokens( | 238 | assert_tokens( |
| 237 | &metu_id, | 239 | &metu_id, |
| 238 | &[ | 240 | &[ |
| 239 | Token::Struct{name: "MetuId", len: 1}, | 241 | Token::Struct{name: "MetuId", len: 2}, |
| 240 | Token::String("id"), | 242 | Token::String("id"), |
| 241 | Token::String("e254275"), | 243 | Token::String("e254275"), |
| 244 | Token::String("passwd"), | ||
| 245 | Token::String("DtNX1qk4YF4saRH"), | ||
| 242 | Token::StructEnd, | 246 | Token::StructEnd, |
| 243 | ] | 247 | ] |
| 244 | ) | 248 | ) |
| @@ -246,8 +250,8 @@ mod tests { | |||
| 246 | 250 | ||
| 247 | #[test] | 251 | #[test] |
| 248 | fn metu_id_deserialize_correctly() { | 252 | fn metu_id_deserialize_correctly() { |
| 249 | let expected_metu_id = MetuId::new ("e254275".to_owned()).unwrap(); | 253 | let expected_metu_id = MetuId::new ("e254275".to_owned(), "DtNX1qk4YF4saRH".to_owned()).unwrap(); |
| 250 | let data = r#"{"id":"e254275"}"#; | 254 | let data = r#"{"id":"e254275","passwd":"DtNX1qk4YF4saRH"}"#; |
| 251 | let metu_id: MetuId = serde_json::from_str(data).unwrap(); | 255 | let metu_id: MetuId = serde_json::from_str(data).unwrap(); |
| 252 | 256 | ||
| 253 | assert_eq!(metu_id, expected_metu_id); | 257 | assert_eq!(metu_id, expected_metu_id); |
| @@ -257,15 +261,18 @@ mod tests { | |||
| 257 | fn auth_request_serialize_correctly() { | 261 | fn auth_request_serialize_correctly() { |
| 258 | let auth_request = AuthRequest { | 262 | let auth_request = AuthRequest { |
| 259 | student_id: "e254275".to_owned(), | 263 | student_id: "e254275".to_owned(), |
| 264 | passwd: "DtNX1qk4YF4saRH".to_owned(), | ||
| 260 | public_key: "public_key".to_owned() | 265 | public_key: "public_key".to_owned() |
| 261 | }; | 266 | }; |
| 262 | 267 | ||
| 263 | assert_tokens( | 268 | assert_tokens( |
| 264 | &auth_request, | 269 | &auth_request, |
| 265 | &[ | 270 | &[ |
| 266 | Token::Struct{name: "AuthRequest", len: 2}, | 271 | Token::Struct{name: "AuthRequest", len: 3}, |
| 267 | Token::String("student_id"), | 272 | Token::String("student_id"), |
| 268 | Token::String("e254275"), | 273 | Token::String("e254275"), |
| 274 | Token::String("passwd"), | ||
| 275 | Token::String("DtNX1qk4YF4saRH"), | ||
| 269 | Token::String("public_key"), | 276 | Token::String("public_key"), |
| 270 | Token::String("public_key"), | 277 | Token::String("public_key"), |
| 271 | Token::StructEnd, | 278 | Token::StructEnd, |
| @@ -277,9 +284,10 @@ mod tests { | |||
| 277 | fn auth_request_deserialize_correctly() { | 284 | fn auth_request_deserialize_correctly() { |
| 278 | let expected_auth_request = AuthRequest { | 285 | let expected_auth_request = AuthRequest { |
| 279 | student_id: "e254275".to_owned(), | 286 | student_id: "e254275".to_owned(), |
| 287 | passwd: "DtNX1qk4YF4saRH".to_owned(), | ||
| 280 | public_key: "public_key".to_owned() | 288 | public_key: "public_key".to_owned() |
| 281 | }; | 289 | }; |
| 282 | let data = r#"{"student_id":"e254275","public_key":"public_key"}"#; | 290 | let data = r#"{"student_id":"e254275","passwd":"DtNX1qk4YF4saRH","public_key":"public_key"}"#; |
| 283 | let auth_request: AuthRequest = serde_json::from_str(data).unwrap(); | 291 | let auth_request: AuthRequest = serde_json::from_str(data).unwrap(); |
| 284 | 292 | ||
| 285 | assert_eq!(auth_request, expected_auth_request); | 293 | assert_eq!(auth_request, expected_auth_request); |
