Feature/email address expressions checker #73

Merged k-suzuki merged 2 commits into nitta-lab-2021:master from nitta-lab-2021:feature/email_address_expressions_checker on 21 May 2021
Showing 4 changed files
View
3
■■
src/main/java/org/ntlab/acanthus_server/entities/AccountJson.java
@JsonProperty("uid")
private Integer uid;
@JsonProperty("name")
private String name;
@JsonProperty("email")
private String email;
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
public AccountJson(Account account){
this.uid = account.getUid();
this.name = account.getName();
this.email = account.getEmail();
}
//-----------------------------------------------------------------
}
View
1
■■■■
src/main/java/org/ntlab/acanthus_server/models/Accounts.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Random;
import java.util.regex.Pattern;
 
/*
* アカウント管理シングルトン
*
View
43
src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.Collection;
import java.util.regex.Pattern;
 
@Component
@Path("/accounts")
public class AccountsRest {
accountJsonList.add(newAccountJson);
}
}
// 全アカウントの取得
else{
else {
for (var account : accounts.getAllAccounts()) {
var newAccountJson = new AccountJson(account);
accountJsonList.add(newAccountJson);
}
@POST
@Produces(MediaType.APPLICATION_JSON)
public int createAccount(@FormParam("name") String name, @FormParam("email") String email, @FormParam("password") String password) {
 
// password: 最低8文字以上の入力
var passMinLen = 8;
if (password.length() < passMinLen) throw new WebApplicationException(401);
// パスワード, メアドが正しく入力されているかチェック
if (!isCorrectPassword(password) || !isCorrectEmailAddress(email))
throw new WebApplicationException(401);
 
// すでに同じメールアドレスが存在しているか
var existAccount = accounts.getAccountByEmail(email);
if (existAccount != null) throw new WebApplicationException(400);
var newAccount = accounts.registerAccount(name, email, password);
 
return newAccount.getUid();
}
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// 正しいメールアドレスが登録されているか判定
//-----------------------------------------------------------------
 
/**
* @param emailAddress メアド
*/
@SuppressWarnings("{unchecked}") // 正規表現の警告無視
private boolean isCorrectEmailAddress(String emailAddress) {
 
var aText = "[a-zA-Z0-9_!#¥¥$¥¥%&'*+/=?¥¥^`{}~|¥¥-]+";
var dotAtom = aText + "(?:\\." + aText + "+)*";
var regularExpression = "^" + dotAtom + "@" + dotAtom + "$";
 
var pattern = Pattern.compile(regularExpression);
var matcher = pattern.matcher(emailAddress);
 
return matcher.find();
}
 
//-----------------------------------------------------------------
// 正しいパスワードが入力されているかチェック
//-----------------------------------------------------------------
 
/**
* @param password パスワード
*/
private boolean isCorrectPassword(String password) {
// password: 最低8文字以上の入力
var passMinLen = 8;
return (passMinLen <= password.length());
}
//-----------------------------------------------------------------
 
}
View
2
■■■
src/main/java/org/ntlab/acanthus_server/resources/accounts/LoginRest.java
 
if (searchAccount == null) throw new WebApplicationException(400);
if (!searchAccount.isMatchedPassword(password)) throw new WebApplicationException(401);
 
searchAccount.updateToken();
searchAccount.updateToken(); // トークンをアカウントに設定
return searchAccount.getToken();
}
//-----------------------------------------------------------