/* * Copyright (c) 2020 InterDigital Communications, Inc * * Licensed under the Apache License, Version 2.0 (the \"License\"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an \"AS IS\" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * AdvantEDGE Platform Controller REST API * * This API is the main Platform Controller API for scenario configuration & sandbox management
**Micro-service**
[meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)
**Type & Usage**
Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform
**Details**
API details available at _your-AdvantEDGE-ip-address/api_
*
* API version: 1.0.0
* Contact: AdvantEDGE@InterDigital.com
* Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
*/
package server
import (
"net/http"
log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger"
sessions "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions"
)
type User struct {
Username string
Password string
SessionId string
Active bool
}
var user1 = User{"u1", "1234", "NA", false}
var user2 = User{"u2", "2345", "NA", false}
var user3 = User{"u3", "3456", "NA", false}
// Map of configured users - Key=Username
var ConfiguredUsers map[string]*User
func init() {
// add preconfigured users
ConfiguredUsers = make(map[string]*User)
ConfiguredUsers[user1.Username] = &user1
ConfiguredUsers[user2.Username] = &user2
ConfiguredUsers[user3.Username] = &user3
}
func authenticateUser(username string, password string) bool {
// Verify user name
user, ok := ConfiguredUsers[username]
if !ok {
return false
}
// Verify password
if user.Password != password {
return false
}
return true
}
func uaLoginUser(w http.ResponseWriter, r *http.Request) {
log.Info("----- LOGIN -----")
// Get form data
username := r.FormValue("username")
password := r.FormValue("password")
// Validate user credentials
if !authenticateUser(username, password) {
http.Error(w, "Unauthorized", http.StatusUnauthorized)
return
}
// Create new session if none found
_, err := pfmCtrl.sessionStore.GetSession(r)
if err != nil {
var sessionInfo sessions.SessionInfo
sessionInfo.Username = username
err = pfmCtrl.sessionStore.CreateSession(&sessionInfo, w, r)
if err != nil {
log.Error("Failed to create session with err: ", err.Error())
return
}
} else {
log.Info("Already logged in...")
}
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.WriteHeader(http.StatusOK)
}
func uaLogoutUser(w http.ResponseWriter, r *http.Request) {
log.Info("----- LOGOUT -----")
// Delete session
err := pfmCtrl.sessionStore.DeleteSession(w, r)
if err != nil {
log.Error("Failed to delete session with err: ", err.Error())
return
}
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.WriteHeader(http.StatusOK)
}